Azure 上 API 应用程序中的 Microsoft 帐户身份验证

Microsoft Account Authentication in API App on Azure

我希望完成的是通过 Microsoft 帐户身份验证提供程序连接到 Visual Studio Team Services。我一直在关注此处的文档 (https://github.com/Azure/azure-content/blob/master/articles/app-service-api/app-service-api-dotnet-connect-to-saas.md),但在实施过程中遇到了一些问题。

他们使用 Microsoft.Azure.AppService.ApiApps.Service 包从 api 网关获取令牌

// Retrieve the token from the gateway
        var runtime = Runtime.FromAppSettings(Request);
        var dropboxTokenResult = await runtime.CurrentUser.GetRawTokenAsync("dropbox");

但是当我发布我的 webapp 时,我在尝试创建运行时 object 时收到 500 错误,远程调试器实际上只是死在下面的行上,我什至没有在 [= =30=] 的流日志界面,以提供有关错误的更多信息。

var runtime = Runtime.FromAppSettings(Request);

知道如何获得令牌吗?

通过 Web api 实现 Microsoft 帐户身份验证的文档有点稀缺,是否有指向对你们有帮助的示例或文档的链接?

此外,apiapp.json 文件真的有必要吗?他们在示例中创建了一个,但通过 Azure 刀片的身份验证设置似乎工作正常,并且将 apiapp.json 文件留在 api 之外似乎并不重要。最后,我希望我的网站 api 能够通过 Microsoft 帐户保持身份验证,无论它移动到哪里,所以我想我需要指定的地方会有一些设置,但也不能真正把那部分放在一起.

看起来您正在使用旧模型构建 API 应用程序(涉及网关),该模型已被弃用。我相信它仍然受到支持,但构建 API 应用程序的官方方式已经改变,你可能会发现它更容易使用。可以在此处找到更多信息:https://azure.microsoft.com/en-us/documentation/articles/app-service-api-whats-changed/

利用 Microsoft 帐户身份验证的文档位于此处:https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-how-to-configure-microsoft-authentication/

完成所有设置后,您可以通过几种不同的方式获取令牌。您可以将其作为入站 HTTP header (x-ms-token-microsoftaccount-access-token) 找到,或者您可以使用 App Service Server SDK 来获取它:类似于:

var creds = await this.User.GetAppServiceIdentityAsync<MicrosoftAccountCredentials>(this.Request);
string accessToken = creds.AccessToken;