【问题标题】:Microsoft Account Authentication in API App on AzureAzure 上 API 应用程序中的 Microsoft 帐户身份验证
【发布时间】:2016-02-09 18:02:47
【问题描述】:

我希望通过 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");

但是当我发布我的 web 应用程序时,我在尝试创建运行时对象时收到 500 错误,远程调试器实际上只是在下面的行中死掉了,我什至在 api 的流式日志接口中看不到任何日志以提供更多信息错误信息。

var runtime = Runtime.FromAppSettings(Request);

关于如何获得令牌的任何想法?

使用 web api 实现 microsoftaccount 身份验证的文档有点稀缺,是否有任何对你们有帮助的示例或文档的链接?

另外,apiapp.json 文件真的有必要吗?他们在示例中创建了一个,但通过 Azure 刀片的身份验证设置似乎可以正常工作,并且将 apiapp.json 文件从 api 中删除似乎并不重要。最后,我希望我的 web api 能够通过 microsoft 帐户维护身份验证,无论它移动到哪里,所以我认为在某个地方我需要指定一些设置,但也不能真正把它放在一起。

【问题讨论】:

    标签: azure authentication azure-api-apps


    【解决方案1】:

    您似乎正在使用已弃用的旧模型构建 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 标头 (x-ms-token-microsoftaccount-access-token) 找到,也可以使用 App Service Server SDK 获取它:类似于以下内容:

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

    【讨论】:

    • 谢谢,我确实在使用旧模型,一旦我清理了所有这些东西并用新的 sdk 重建它似乎一切都开始工作了。我可以弄清楚如何获得令牌的唯一方法是通过标题接受您的建议:Request.Headers.GetValues("x-ms-token...")
    猜你喜欢
    • 2014-02-20
    • 1970-01-01
    • 2018-02-10
    • 2023-01-14
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多