首页 文章

使用组织帐户(多个租户)向ASP.NET MVC添加自定义声明

提问于
浏览
2

有没有办法在用户通过身份验证后向我的ClaimsPrincipal添加自定义声明?在为个人帐户使用ASP.NET标识时,可以在创建主体时向ClaimsPrincipal添加自定义声明,但在使用组织帐户模板时无法找到执行此操作的方法 .

2 回答

  • 2

    对于组织帐户身份验证,模板设置HTTP处理程序以处理用户的身份验证 . 如果查看web.config,您将看到添加到项目中的两个模块,即 WSFederationAuthenticationModuleSessionAuthenticationModule . 因此,与用于个人帐户的基于cookie的身份验证相比,它是一种完全不同的身份验证和授权舞蹈 .

    您正在寻找的可扩展性点是 ClaimsAuthenticationManagerAuthenticate 方法 . 只需创建一个派生自此的类并重写Authenticate方法 . 这将允许您访问经过身份验证的用户的 ClaimsPrincipal 对象,您可以在调用应用程序代码之前将用户的声明集合扩展到您想要的任何内容 .

    如何设置它的一个例子是here .

  • 0

    您需要重新签名用户 .

    默认情况下,您的声明会被加密并存储为浏览器中的单个Cookie . 在操作了ClaimsPrincipal之后,您需要将cookie保留回浏览器 .

    我同意verbage是坏的,但你必须做以下事情

    var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
    var authenticationProperties = new AuthenticationProperties { IsPersistent = false };
    
    authenticationManager.SignIn(authenticationProperties, myManipulatedClaimsIdentity);
    

相关问题