获取Azure AD B2C令牌时出错

时间:2018-03-14 13:06:25

标签: azure asp.net-core azure-ad-b2c razor-pages

我正在使用Azure AD B2C来满足我的Web应用程序的用户身份要求。我正在使用ASP.NET Core 2.0 Razor Pages项目来构建Web应用程序。

如果在尝试访问网页时未对用户进行身份验证,则会将其路由到Azure AD B2C登录页面。如果成功通过验证,它们将返回到我的Web应用程序。

我正在尝试使用此文档https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-access-tokens

来获取返回的JWT令牌

我一直收到以下错误:

enter image description here

我使用以下代码检索令牌。

string url = $"https://login.microsoftonline.com/{this._options.Domain}/oauth2/v2.0/authorize?";
            string policy = this._options.SignUpSignInPolicyId;
            string clientid = this._options.ClientId;
            string grantType = "authorization_code";
            Random random = new Random();
            int nonce = random.Next();
            string redirectUri = WebUtility.UrlEncode("https://localhost:44315/");
            string scope = WebUtility.UrlEncode($"https://{this._options.Domain}/notes/openid");
            const string responseType = "code";

            string request =
                $"{url}p={policy}" +
                $"&client_id={clientid}" +
                $"&grant_type={grantType}" +
                $"&nonce={nonce}" +
                $"&redirect_uri={redirectUri}" +
                $"&scope={scope}" +
                $"&response_type={responseType}";

            var response = await GetData(request);

1 个答案:

答案 0 :(得分:2)

似乎从Azure AD B2C返回的声明包含在User.Claims对象中。

if (User.Identity.IsAuthenticated)
{
    Claim emailClaim = User.Claims.FirstOrDefault(claim => claim.Type == "emails");
    Claim isNewClaim = User.Claims.FirstOrDefault(claim => claim.Type == "newUser");
}