【发布时间】:2015-05-29 15:25:45
【问题描述】:
当使用 Postman 在 Chrome 和 x-zumo-auth 标头中进行身份验证时,我的 API 应用程序使用控制器中的以下代码成功识别了用户的 upn:
Runtime runtime = Runtime.FromAppSettings(Request);
EmaUserInfo user = runtime.CurrentUser;
TokenResult token = await user.GetRawTokenAsync("aad");
string upn = token.Claims[ClaimTypes.Upn];
但是,当使用 Microsoft 的 AzureCards 控制台客户端示例中的代码(将浏览器添加到表单窗口并捕获 zumo 令牌)时,我无法获取用户的 aad 令牌并从 API 应用程序中获得以下错误:
Request to https://[gateway].azurewebsites.net/api/tokens?tokenName=aad&api-version=2015-01-14 GET failed BadRequest 400 (Bad Request)
{
"status": 400,
"source": "https://[gateway].azurewebsites.net/api/tokens?tokenName=aad&api-version=2015-01-14",
"message": "Microservice '[API App]' only has permissions for token ''. Can't get token 'aad'"
}
有趣的是,这甚至发生在我设置断点并将 zumo 令牌从我的测试程序复制到邮递员时。程序失败,邮递员成功返回。据我所知,他们发送的请求完全相同。我可能会错过什么?
编辑: 我做了更多测试,发现 Postman 方法在隐身模式下会产生相同的错误。这让我相信,不仅需要设置 x-zumo-auth 标头,还需要设置一些 cookie 以使用户正常工作。如果我生成令牌,从 apiapp url 中删除 cookie 并仅使用令牌发布请求,我也会收到错误。
【问题讨论】:
标签: c# authentication azure azure-api-apps