我希望通过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时,我在尝试创建Runtime对象时遇到500错误,远程调试器在下面的行上就死了,我甚至没有在api的流日志界面中看到任何日志给出更多有关错误的信息。
var runtime = Runtime.FromAppSettings(Request);
有关如何获取令牌的任何想法?
使用web api实现microsoftaccount身份验证的文档是有点稀缺的,任何链接到示例或文档对你们有帮助吗?
另外,apiapp.json文件是否真的有必要?他们在示例中创建一个,但身份验证设置通过Azure刀片似乎工作正常,并将apiapp.json文件从api中删除似乎无关紧要。最后,我希望我的web api能够通过微软帐户维护身份验证,无论它移动到哪里,所以我想在某处我需要指定设置,但不能真正把它放在一起。
答案 0 :(得分: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;