[英]How to handle redirect request
我已经在B2C中创建了所有内容,并且可以调用URL(使用asp.net page_load方法中的Response.Redirect()
)来显示[Microsoft]登录屏幕。
用户成功登录后,浏览器将按预期重定向到提供的redirect_url(另一个asp.net页)。
我找不到关于如何处理重定向请求以提取有关已登录用户的详细信息的指导(我在b2c中设置的“声明”)。
我在URL中包含了以下&response_type=code+id_token
,可以看到两者都包含在Request.Params
集合中。
我现在找不到描述如何创建要调用的URL的文档。 关于如何进行的任何想法? 谢谢。
为了完整起见,这是完整的重定向指令(但是AFAIK没问题):
Response.Redirect("https://login.microsoftonline.com/" +
AuthenticationConstants.Tenant.ToString() +
"/oauth2/v2.0/authorize?p=" +
AuthenticationConstants.PolicySignIn.ToString() +
"&client_id=" +
AuthenticationConstants.ClientID.ToString() +
"&redirect_uri=" +
Server.HtmlEncode("https://localhost:44301/auth/Login.aspx") +
"&response_mode=query" +
"&response_type=code+id_token" +
"&scope=openid " + AuthenticationConstants.ClientID.ToString()
);
您在B2C中设置的声明包含在id_token中。 ASP.Net通过ClaimsPrincipal.Current.FindFirst('nameOfTheClaim')
为您提供这些功能。
从适用于ASP.Net Web App的Azure AD B2C指南 :
// Controllers\HomeController.cs
[Authorize]
public ActionResult Claims()
{
Claim displayName = ClaimsPrincipal.Current.FindFirst(ClaimsPrincipal.Current.Identities.First().NameClaimType);
ViewBag.DisplayName = displayName != null ? displayName.Value : string.Empty;
return View();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.