Windows存储应用程序以验证Azure功能

时间:2017-06-06 21:45:39

标签: azure azure-active-directory azure-functions

我尝试复制以下示例https://github.com/Azure-Samples/active-directory-dotnet-windows-store(针对azure AD进行身份验证的Windows应用商店应用),但我正在用Azure功能替换Web App。

在Function中,检查用户是否已登录的代码如下:

ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/scope").Value.Contains("user_impersonation"))

但是这不包含所需的值,而其他调用也不会返回任何值(例如ClaimsPrincipal.Current.FindFirst(ClaimTypes.GivenName));

你知道发生了什么吗?

2 个答案:

答案 0 :(得分:0)

它与代码是在Web App还是Azure Function中运行无关。根本原因是您获取令牌的差异参数/方式。

使用Azure AD保护Azure功能并将令牌与请求关联时,它还会解析令牌并读取令牌中的声明并构造ClaimsPrincipal对象。

您可以在this site中解析令牌,以检查您在令牌中所期望的声明。

答案 1 :(得分:0)

请参阅此问题https://github.com/Azure-Samples/active-directory-dotnet-daemon/issues/1

该范围不在索赔清单中。您可以尝试以下操作来转储您获得的所有声明并查看可用的声明。

foreach (Claim claim in ClaimsPrincipal.Current.Claims)
{
   log.Info("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value);
}