https://apps.dev.Microsoft.com/ に登録してlive.com/Outlook.comメールボックスにアクセスする簡単なC#モバイルアプリケーションを作成しています( Outlook 365 mbxではありません)。クライアントIDを使用した認証にADALを使用し、登録からURIをリダイレクトしています。登録サイトからパスワードを生成する必要があるかどうか、および生成されたパスワードをどのように使用する必要があるのかわかりません。私が経験しているのは、通常の認証プロンプトが表示され、資格情報が提供され、データ(名、姓など)とともにトークンが返される(RequestSecurityTokenResponse)のが表示されます。これは、認証プロセスが成功したにもかかわらず、認証プロセスがエラー "AADSTS50020で終了します:MicrosoftアカウントのこのAPIバージョンからトークンを発行できません。これをサポートするにはプロトコルのバージョン2.0を使用する必要があるため、アプリケーションベンダーに連絡してください。 "
エラーの解釈方法がわかりません。プロトコルのv2.0を使用していないというエラーですか、それとも認証エンドポイントのv2.0を呼び出していないというエラーですか。
私が直面している問題は、Microsoftがプロトコルとインターフェイスを何度も変更し、live.com /Outlook.comとAzure/office365を混同しているため、最終的には機関のURLとして何を提供すべきかわからないことです。そして、live.com /Outlook.comメールボックスにアクセスするためのリソースURI。
私が気付いたのは、認証UIとは別に、アプリケーションが自分に代わって動作することを承認する必要があるUIを取得していないことです。
以下は、SMTPアドレスが難読化された送信リクエストです。
これが私が使用したコードです:
string authority = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize";
PlatformParameters authParms = new PlatformParameters(PromptBehavior.Always, null);
AuthenticationContext authContext = new AuthenticationContext(authority, TokenCache.DefaultShared);
AuthenticationResult result = await authContext.AcquireTokenAsync(
"https://Outlook.office.com/mail.read",
clientId,
new Uri(redirectUri),
authParms);
ここには3つのことがあります。
https://apps.dev.Microsoft.com Webサイトで作成されたアプリケーションは、v1.0エンドポイントではなくAAD v2.0エンドポイントを対象としています(これらはプロトコルの異なるバージョンです)
V2.0エンドポイントはADALではサポートされていません。 MSALでサポートされています。ただし、MSALの開発は進行中であるため、まだ十分に使用できるとは思いません(数週間で使用できるようになるはずですが、それでもGAになるとは思いません)。
MSAアカウントを使用した直接認証は、V2.0エンドポイントからサポートされているため、ADALではサポートされていません。 ADALはADFSとAADのみをサポートします
MSAアカウント(ライブ)で認証する必要があるため、MSAを使用する必要があることを理解しました。できれば少し待つことをお勧めします
注:これは少し微妙ですが、Azure Active DirectoryのMSAアカウントであるAADゲストアカウントを持つこともできます(ユーザーを作成する既存の電子メールアドレス(MSAの可能性があります)。これはV1.0エンドポイント(したがってADAL)でサポートされていますが、AADテナントでこれらの電子メールアドレスを使用してユーザーを作成する必要があります。これはおそらく必要なものではありません。また、MSAが機能しないフローもあるため(たとえば、ユーザーがWebサービスを使用するWebサービスを使用することを認証する場合:代わりにフロー)、このオプションはお勧めしません。