我正在使用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令牌我一直收到以下错误:
我使用以下代码检索令牌。
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);
答案 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");
}