UseCookieAuthentication.LoginPath在AD B2C回调中不返回身份/声明

时间:2018-08-21 22:43:21

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

我有一个使用AD B2C进行身份验证的旧版MVC应用。我想要的行为是能够将用户重定向到我的登录页面,而不是B2C登录页面。进入登录页面后,我将进行一些预验证,然后向用户发送挑战。我已经测试了以下内容,并且此挑战的回调有效并且返回了用户的身份/声明(例如http://bitoftech.net/2016/08/31/integrate-azure-ad-b2c-asp-net-mvc-web-app/comment-page-1/#comment-129447)。

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());

app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignUpPolicyId));
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(ProfilePolicyId));
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignInPolicyId));

为了实现重定向到我的登录页面,我引用了以下SO,该方法可以正常工作,除非我在回调中未获得Claims / Identity信息。对SO的引用:CookieAuthenticationOptions.LoginPath value not used when also using app.UseOpenIdConnectAuthentication

这是我的代码更改:

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignUpPolicyId));
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(ProfilePolicyId));
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignInPolicyId));

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = "ApplicationCookie",
    LoginPath = new PathString("/Account/Login")
});

如何在回叫中获得索偿/身份? Request.IsAuthenticated也是假的。我的回叫:

[AllowAnonymous]
[HttpGet]
public ActionResult Callback() {

var identity = (ClaimsIdentity)User.Identity;
IEnumerable<Claim> claims = identity.Claims;
//CLAIMS ONLY HAS NAME AND IS EMPTY - THERE SHOULD BE 18 CLAIMS
return RedirectToAction("Index", "AppIndex");

}

1 个答案:

答案 0 :(得分:0)

根据我对您要实现的目标的了解,目前尚无法实现。

请参阅FAQ for Azure B2C

  

我可以在Azure AD B2C服务的注册和登录页面上使用自己的URL吗?例如,我可以从   要登录到login.contoso.com,是login.microsoftonline.com?

     

目前不行。此功能在我们的路线图上。验证您的网域   在Azure门户的“域”选项卡中,无法实现此目标。

但是,您可以upvote the feature request并订阅Azure用户语音,以便在此功能可用时得到通知。