【问题标题】:Why Claim based authentication instead of role based authentication为什么基于声明的身份验证而不是基于角色的身份验证
【发布时间】:2012-12-12 13:46:39
【问题描述】:

我是基于声明的身份验证的新手。我已经阅读了几篇文章,无法弄清楚基于声明的身份验证的确切用途。以下是我对基于声明的身份验证的一些疑问。

  1. 我想知道基于声明的身份验证与基于角色的身份验证有何区别和优势。
  2. 我们能否使用基于声明的身份验证而不是 ADFS 连接到 Sql Server 2008 R2?如果,那怎么办?
  3. 在 WCF 中使用基于声明的身份验证的优势?

谁能给我一些解释,以便我理解基于声明的身份验证并在我的应用程序中使用?

【问题讨论】:

  • 一般来说,stackoverflow.com/q/6786887/223837 的答案可能会有所帮助。请注意,安全令牌可以包含“此用户具有角色 R”的声明,然后应用程序可以使用它来执行基于角色的授权

标签: wcf claims-based-identity simplemembership role-based


【解决方案1】:

此外 - 声明与身份验证无关。

不存在基于声明或基于角色的身份验证。它是关于以您的应用程序可以使用的方式对身份进行建模。

角色也是声明(具有固定的真/假值) - 声明只是通过键/值对为您提供更多表现力。

【讨论】:

    【解决方案2】:

    最终,使用声明的主要好处包括:

    1. 为您的服务提供一致的编程模型 - 您 不需要知道如何实现特定的安全机制, 一个站点可能使用用户名和密码 身份验证/授权,另一个 Active Directory。你服务 无论哪种方式都不在乎,因为您所做的只是处理 所有情况下的索赔。

    2. 您无需担心安全问题 执行。这是由第三方完成的。

    3. 您可以自定义声明以适合您的域,并将其视为 扩展您的授权逻辑 - 标准安全属性 通常只为您提供角色等基本信息。 你当然可以扩展它,但是你做更多的工作和 通常难以实施(例如,扩展 AD 通常不是技术挑战,而是策略限制 - 管理员不愿意修改 AD 架构以适应特定应用程序)。

    4. 可互操作 - 因为声明 [格式] 基于标准,因此随着安全性的底层技术被抽象化,它们在不同语言和领域的服务之间变得更加可互操作。

    如果您正在创建新的 .NET 4.5 WCF 服务,您已经可以开始使用声明,因为命名空间向后兼容早期的安全实现,因此即使您现在确定声明不适合您,您也会处于更好的状态位置稍后升级。

    关于索赔的内容比我在这里可以写的要多得多,我相信还有其他人有额外的理由说明考虑索赔可能是一件好事。

    希望这会有所帮助。

    【讨论】:

    • 嗨,斯蒂芬,感谢您的帮助。我有一个疑问。是否可以使用基于声明的身份验证而不是 ADFS 连接到 Sql Server 2008 R2?能否请您多说一些?
    • ADFS2 将使用几乎任何数据源,而不是管理身份验证/授权(SQL Server、AD、XML...)。搜索 ADFS2 将提供更多详细信息。无论哪种方式,实施这样的事情都需要一些计划,并且很可能需要您的系统管理员参与。
    • @stephenl 这并不完全正确:AD FS 2.0 验证仅针对 Active Directory(请参阅stackoverflow.com/a/4938662/223837),但它可以创建声明> 大量来源。
    • @MarnixKlooster 我的印象是,如果您有 SQL 成员资格提供程序数据库,您也可以使用它,但如果不是这种情况,我会更正。我只是想说明可以从多个来源创建声明。
    • 感谢大家的回复。我想知道我是否可以在没有 ADFS 的情况下制作 STS。即,在没有 ADFS 的情况下,借助 sql server 数据库创建 STS。这种场景可能吗。如果是,请提供一些指导方针。
    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 2021-11-22
    相关资源
    最近更新 更多