我所读到的有关基于声明的身份验证的所有内容本质上都是关于将您的身份验证过程“外包”给受信任的第 3 方。
看:
Explain "claims-based authentication" to a 5-year-old
Why Claim based authentication instead of role based authentication
显然,这很适合使用 Facebook 或 Google 之类的东西进行身份验证。但是如果没有第三者呢? 如果您只需要用户针对内部数据库进行身份验证怎么办? 例如,在公司环境中。是否有任何理由对普通的旧角色使用声明?如果是这样,一些具体的例子会有所帮助。
到目前为止我对 claim 的了解:
最佳答案
原因有很多,包括你提到的这些。
另一个原因是表单例份验证模块无法处理太大的 cookie。只需添加几百个角色并超过允许的最大 cookie 大小 (4kb),您就很不走运了。处理声明 cookie 的 session 身份验证模块会自动将太大的 token 拆分为多个 cookie。如果您不想拥有多个 cookie,只需简单地切换到“ session 模式”即可自动将大 token 存储在 session 容器中,而 cookie 仅包含一小部分信息来反射(reflect)这一点。
声明驱动 cookie 的另一个论点是,您可以处理任何自定义数据,包括租户名称(在 Multi-Tenancy 应用程序中)、家庭组织名称、年龄,以及您以后可能需要的任何数据。 Forms cookie 具有自定义数据部分,但它只是一个字符串,因此您需要一个自定义序列化程序才能在此处获取结构化数据。
所有这些都是由 session 身份验证模块完成的,坦率地说,它很容易胜过表单模块。将您的表单例份验证切换到新模块也很容易,我前段时间在博客上写过(其他人也写过关于它的博客):
http://www.wiktorzychla.com/2012/09/forms-authentication-revisited.html
关于asp.net - 不使用 OAuth/外部身份验证提供程序时,ASP.Net 身份声明有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23836001/