我已经在B2C中创建了所有内容,并且可以调用URL(使用我的asp.net page_load方法中的Response.Redirect()
)来显示[Microsoft]登录屏幕。
用户成功登录后,浏览器会按预期重定向到提供的redirect_url(另一个asp.net页面)。
我无法找到关于如何处理该重定向请求的任何指导,以便提取有关已登录用户的详细信息(&#39;声明&#39;我在b2c中设置)。< / p>
我在网址中加入了以下&response_type=code+id_token
,并且可以看到它们都包含在Request.Params
集合中。
我现在无法找到描述如何创建我正在呼叫的网址的文档。关于如何进行的任何想法?感谢。
这里是完整的重定向指令,完整性&#39;缘故(但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()
);
答案 0 :(得分:0)
您在B2C中设置的声明包含在id_token中。
ASP.Net通过ClaimsPrincipal.Current.FindFirst('nameOfTheClaim')
为您提供这些服务。
来自Azure AD B2C guide for an ASP.Net Web App:
// 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();
}