web-dev-qa-db-ja.com

AADSTS50020:MicrosoftアカウントのこのAPIバージョンからトークンを発行できません

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を取得していないことです。

Authentication error

以下は、SMTPアドレスが難読化された送信リクエストです。

https://login.live.com/ppsecure/post.srf?wa=wsignin1.0&wtrealm=urn%3afederation%3aMicrosoftOnline&wctx=estsredirect%3d2%26estsrequest%3drQIIARWPsU7CQABAubaQghqRaIIbAy6aa3uFttwlDmog0gEGXSQu19JCY8thbcU4ObjLBzg5OpjoYAyf4MRiYtg00RhmTRzF5SVvey8zV5JQScISQqqeA2idRxIiRYoMS8cUQ8VANixj14HUxSp0DAuXKmXVsh0tzGWyaDi_ix-FndGH_zZprV09ATAG4AuACw5MuMXmVhx11X-w0Dt3plzSZx2vd8sXu1HUPyGyzOLIZ-xIYq7r2Y5ks0AOqOdLoUPbD3xq5gHrjfiihjVLN7QStPU2hmWDupAirQJtza5gRbeo5rZfeTAWwFRYEfnsQj5d-BQVnohiKsvlE4XErwBukrPk7aX3 -7vD5eblwc_1y_d-4jkp980qik_7x11crwaBKesmrQ-qhhm2VKaE-2Fto7XXsNBZo9bZRAQNU2CUXo3DHvGcyCWDDmF0tkhUSSGMWX81&wfresh = 0&ID =&pcexp = FALSE&名= XYZ%40hotmail.com&popupui = 1&たContextID = 70F2DEC5506FD639&BK = 1491815919&uaid = 480c9031b6394304bae56ce1da5a258f&PID = 0

これが私が使用したコードです:

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);
10
noplace

ここには3つのことがあります。

  1. https://apps.dev.Microsoft.com Webサイトで作成されたアプリケーションは、v1.0エンドポイントではなくAAD v2.0エンドポイントを対象としています(これらはプロトコルの異なるバージョンです)

  2. V2.0エンドポイントはADALではサポートされていません。 MSALでサポートされています。ただし、MSALの開発は進行中であるため、まだ十分に使用できるとは思いません(数週間で使用できるようになるはずですが、それでもGAになるとは思いません)。

  3. MSAアカウントを使用した直接認証は、V2.0エンドポイントからサポートされているため、ADALではサポートされていません。 ADALはADFSとAADのみをサポートします

MSAアカウント(ライブ)で認証する必要があるため、MSAを使用する必要があることを理解しました。できれば少し待つことをお勧めします

注:これは少し微妙ですが、Azure Active DirectoryのMSAアカウントであるAADゲストアカウントを持つこともできます(ユーザーを作成する既存の電子メールアドレス(MSAの可能性があります)。これはV1.0エンドポイント(したがってADAL)でサポートされていますが、AADテナントでこれらの電子メールアドレスを使用してユーザーを作成する必要があります。これはおそらく必要なものではありません。また、MSAが機能しないフローもあるため(たとえば、ユーザーがWebサービスを使用するWebサービスを使用することを認証する場合:代わりにフロー)、このオプションはお勧めしません。

5
user4947563