【问题标题】:.NET 4.5 How to create this Custom Claim Type?.NET 4.5 如何创建此自定义声明类型?
【发布时间】:2014-02-13 13:35:41
【问题描述】:

背景

目前,我正在进行的一个项目正在以一种不太好的方式进行安全保护。我正在尝试将其升级为基于声明的安全性,因为我认为它与我们存储的信息类型更匹配。不过,我是新手,所以想尽快吸收很多东西。

我们需要存储:

  • 标准信息(姓名、电子邮件等)
    • 已经有很好的声明类型。
  • 用户有权访问的客户端站点列表
    • 大概是一个名为“ClientSite”的声明类型,带有一个 ID)——应该是简单的
  • 每个给定客户端站点的用户角色列表。
    • 嗯....

最后一个让我有点绊倒。我想我需要创建一个具有客户端站点 ID 和角色值的自定义声明类型。

问题

  • 如何创建自定义声明类型来存储 ID(代表网站的一部分)和角色本身?
  • 完成此操作后,我将如何适当地创建该声明?我需要自定义方式来处理Rights.PossessProperty,还是我想多了?

提前感谢您为我指明了正确的方向。正如我所说,我正在学习 Pluralsight 课程等,但我也想发布一些东西。 :)

【问题讨论】:

    标签: c# authentication forms-authentication .net-4.5 claims-based-identity


    【解决方案1】:

    您正在查看错误的 Claim 类 - System.IdentityModel.Claim 中的那个已被弃用。

    新的是 System.Security.Claims。

    本书为您介绍了哲学: http://msdn.microsoft.com/en-us/library/ff423674.aspx

    【讨论】:

      【解决方案2】:

      假设您的“用户到部分”来自数据库。 Identity.HasClaim 将让您验证用户到部分。至于自定义声明,它只是一个字符串,需要看起来类似于下面示例中的字符串。

       public class UsersSections
       {
          public int SectionId { get; set; }
          public int UserId { get; set; }
       }
      
       var userSectionsList = new List<UsersSections>
              {
                  new UsersSections
                  {
                      SectionId = 1000,
                      UserId = 200
                  },
                  new UsersSections
                  {
                      SectionId = 2000,
                      UserId = 200
                  }
              };
      
              var identity = new ClaimsIdentity();
              identity.AddClaim(new Claim(ClaimTypes.NameIdentifier,"I am a user with a userid of 200"));
              foreach (var usersSections in userSectionsList)
              {
                  identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/section","1000"));
              }
      
              if (identity.HasClaim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/section", "1000"))
              {
      
              }
      

      【讨论】:

        猜你喜欢
        • 2013-03-04
        • 1970-01-01
        • 2011-05-14
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        • 2019-10-17
        • 1970-01-01
        • 2019-11-06
        相关资源
        最近更新 更多