0

私はこれを理解しようとして何時間も費やしました。誰かが助けてくれることを願っています。ユーザーは、Azure AD (Microsoft 組織アカウント) を使用して ASP.NET サイトに対して認証を行います。理想的には、Exchange Web サービスに接続できるようにしたいのですが、資格情報を渡す方法がわかりません。検索から、User.Identity からパスワードを取得する方法がないことがわかりました。

Pop または IMAP で同じ問題が発生しています。

このコードは、「自動検出サービスが見つかりませんでした」を返しています。サーバー名を明示的に伝えると、401 Unauthorized エラーが発生します。

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl(User.Identity.Name, RedirectionUrlValidationCallback);

        private static bool RedirectionUrlValidationCallback(string redirectionUrl)
        {
            // The default for the validation callback is to reject the URL.
            bool result = false;

            Uri redirectionUri = new Uri(redirectionUrl);

            // Validate the contents of the redirection URL. In this simple validation
            // callback, the redirection URL is considered valid if it is using HTTPS
            // to encrypt the authentication credentials. 
            if (redirectionUri.Scheme == "https")
            {
                result = true;
            }
            return result;
        }
4

1 に答える 1

0

アプリケーションは、ユーザーの資格情報にアクセスできません。それが連携認証の前提です。Azure AD はユーザーを認証し、アプリケーションがユーザーを検証してサインインする SAML/JWT トークンを発行します (基になる ID フレームワークがこの作業を行っている可能性があります)。

つまり、アプリケーションは Azure AD から委任されたトークンを取得して、サインインしているユーザーの代わりに Office365 API にアクセスし、代わりにカレンダーに電子メールや書き込みを送信できます。次のドキュメントでは、手順を追って説明します (Visual Studio のサンプルが含まれています): http://msdn.microsoft.com/en-us/library/office/dn605893(v=office.15).aspx

更新されたリンク: https://msdn.microsoft.com/en-us/office/office365/howto/starter-projects-and-code-samples

ユーザー エクスペリエンスは次のようになります。ユーザーはアプリケーションのサインイン ボタンをクリックします。アプリケーションは、ユーザーが Azure AD にサインインする必要があると判断し、SSO と委任されたトークン要求を使用して、ユーザーのエージェントを Azure AD にリダイレクトします。ユーザーには、次のような「同意」ページが表示されます。アプリケーションがあなたに代わってメールにアクセスしようとしています。ユーザーは同意を許可し、サインインします。AAD は、ID トークン (SSO 用にアプリに宛てられた) と、アプリケーションがアクセス トークン (Exchange Online に宛てられた) と引き換えることができる認証コードを使用して、ユーザーのエージェントをアプリケーションにリダイレクトします。電子メールを送信します。

お役に立てれば。

于 2014-05-09T18:07:15.420 に答える