无法设置 ClaimsIdentity
Can't set ClaimIdentity
我有一组声明。我用它来创建一个 ClaimsIdentity。我还使用 OWIN 登录身份。此外,我将其添加到 ClaimsPrincipal.Current.Identities。这是我的代码...
[HttpPost]
[AllowAnonymous]
public async Task<ActionResult> LogonCallBack()
{
var token = Request.Params["id_token"];
var validatedToken = TokenService.ValidateIdToken(token);
var identity = new ClaimsIdentity(validatedToken.Claims);
HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties { IsPersistent = false }, identity);
ClaimsPrincipal.Current.AddIdentity(identity);
return RedirectToAction("Display");
//return RedirectToAction("Index", "Error", new { area = "Token Validate Failed." });
}
调试时,我发现我正在检索的一组声明没有问题。我可以创建 ClaimsIdentity。然而,在此之后,当我被重定向到显示页面时,User.Identity.IsAuthenticated 仍然是错误的。 ClaimsPrincipal.Current 的列表中没有添加的身份。
我怎样才能让用户通过身份验证?
您应该使用 SecurityHelper
为当前用户添加身份。
var owinContext = HttpContext.GetOwinContext();
var securityHelper = new Microsoft.Owin.Security.Infrastructure.SecurityHelper(owinContext);
securityHelper.AddUserIdentity(identity);
我在身份声明中添加了 cookietype 字符串:
var identity = new ClaimsIdentity(validatedToken.Claims, DefaultAuthenticationTypes.ApplicationCookie);
而且我还在中间件管道中添加了相同的字符串,如下所示:
app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ApplicationCookie);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/OIDC/Authenticate")
});
我有一组声明。我用它来创建一个 ClaimsIdentity。我还使用 OWIN 登录身份。此外,我将其添加到 ClaimsPrincipal.Current.Identities。这是我的代码...
[HttpPost]
[AllowAnonymous]
public async Task<ActionResult> LogonCallBack()
{
var token = Request.Params["id_token"];
var validatedToken = TokenService.ValidateIdToken(token);
var identity = new ClaimsIdentity(validatedToken.Claims);
HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties { IsPersistent = false }, identity);
ClaimsPrincipal.Current.AddIdentity(identity);
return RedirectToAction("Display");
//return RedirectToAction("Index", "Error", new { area = "Token Validate Failed." });
}
调试时,我发现我正在检索的一组声明没有问题。我可以创建 ClaimsIdentity。然而,在此之后,当我被重定向到显示页面时,User.Identity.IsAuthenticated 仍然是错误的。 ClaimsPrincipal.Current 的列表中没有添加的身份。
我怎样才能让用户通过身份验证?
您应该使用 SecurityHelper
为当前用户添加身份。
var owinContext = HttpContext.GetOwinContext();
var securityHelper = new Microsoft.Owin.Security.Infrastructure.SecurityHelper(owinContext);
securityHelper.AddUserIdentity(identity);
我在身份声明中添加了 cookietype 字符串:
var identity = new ClaimsIdentity(validatedToken.Claims, DefaultAuthenticationTypes.ApplicationCookie);
而且我还在中间件管道中添加了相同的字符串,如下所示:
app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ApplicationCookie);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/OIDC/Authenticate")
});