如何处理重定向请求

时间:2018-01-03 10:17:31

标签: c# asp.net azure-ad-b2c

我已经在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()
                         );

1 个答案:

答案 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();
}