ASP.NET 核心、Microsoft 帐户登录和 AADSTS 70001

ASP.NET Core, Microsoft Account Login & AADSTS70001

我正在尝试在我的应用程序中使用 Microsoft 帐户登录。几年前我尝试过,MSAccount 由于某些限制(本地主机开发等)总是难以使用 - 但现在看来这是可能的。

我使用了这个 docs.microsoft guide 并创建了一个全新的 ASP.NET 核心应用程序并使用了 Microsoft.AspNetCore.Authentication.MicrosoftAccount NuGet package.

当我单击 Microsoft 登录按钮时,我被重定向到 login.microsoft 页面: (我删除了 clientId 和状态)

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=....&scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read&response_type=code&redirect_uri=https%3A%2F%2Flocalhost%3A44320%2Fsignin-microsoft&state=....

现在我正在输入我的个人 Microsoft 帐户登录信息(例如 foobar@hotmail.com)

接下来我将被重定向到 "Enter password" 页面:

https://login.live.com/oauth20_authorize.srf?client_id=....&scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read&response_type=code&redirect_uri=https%3A%2F%2Flocalhost%3A44320%2Fsignin-microsoft&state=...&login_hint=...&ui_locales=en-US&display=page&uaid=21775924944348cfb0f84a8c0af34259&issuer=mso&tenant=common&msproxy=1

在我输入密码并单击登录后,我被重定向回我的应用程序并带有一个大 "unhandled exception occurred"

Exception: OAuth token endpoint failure: Status: BadRequest;Headers: Cache-Control: no-store, no-cache Date: Wed, 12 Apr 2017 06:57:18 GMT Pragma: no-cache P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" Server: Microsoft-IIS/8.5 Set-Cookie: esctx=AQABAAAAAABnfiG-mA6NTae7CdWW7QfdD3JzLSDc3ZvXogRmsm6vmOSSFDequk0G6rQQlFmOrTaEnzNYcStgzBDm04fNESerSjI3ytHGCzBQkCrOZSy5bYq5CrARZbRfx_oh8wbkqVaK8c1Q6VYyxN43noSOCpff72HxLg9fgB7t4DIPl7QLSjsFVmVxxeN4Xs06bT40AxogAA; domain=.login.microsoftonline.com; path=/; secure; HttpOnly, x-ms-gateway-slice=004; path=/; secure; HttpOnly, stsservicecookie=ests; path=/; secure; HttpOnly Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff x-ms-request-id: de0960ca-282b-4832-8d79-7e544fb30500 X-Powered-By: ASP.NET ;Body: {"error":"unauthorized_client","error_description":"AADSTS70001: Application with identifier '000000004C1CEB08' was not found in the directory 9188040d-6c67-4c5b-b112-36a304b66dad\r\nTrace ID: de0960ca-282b-4832-8d79-7e544fb30500\r\nCorrelation ID: f204ae6b-8169-4b2c-8af6-902f1c62b79d\r\nTimestamp: 2017-04-12 06:57:19Z","error_codes":[70001],"timestamp":"2017-04-12 06:57:19Z","trace_id":"de0960ca-282b-4832-8d79-7e544fb30500","correlation_id":"f204ae6b-8169-4b2c-8af6-902f1c62b79d"}; ```

过去我们做了一些 Azure Active Directory / Office 365 开发,我的 MSAccount 可能也在一两个不同的 Azure Active Directory 中,但我的目标只是用我的个人 Microsoft 帐户,所以我不确定为什么错误指向某个 AAD 目录。

任何提示如何解决这个问题?

问题与我的应用程序注册有关。在 this URL 下,您可以创建不同的应用程序类型 - 确保您使用 融合应用程序 不是(!)Live SDK 应用程序.

应用ID应该是guid的形式(live SDK应用app id不是guid)。

如下图,您的 ClientSecret 在“Value”下(而不是在“Secret ID”下):

并且如下图所示,您的 ClientId 是“应用程序(客户端)ID”(而不是“目录(租户)ID”):