向5岁的人解释“基于声明的身份验证”

时间:2011-07-22 07:22:50

标签: terminology claims-based-identity

嗯,不完全是一个5岁的孩子,但如果可能的话,请避免使用流行语和enterprisepeak。

基于声明的身份验证现在似乎风靡一时,但我找不到一个简单而实际的解释,它实际上是什么,它与我们现在的不同(我假设“我们是什么”现在“要进行基于角色的身份验证”,使用它有什么好处等等。

6 个答案:

答案 0 :(得分:204)

@Marnix有一个很好的答案,但要远离它的技术方面:

基于声明的身份验证是指定义您信任的人,为您提供有关身份的准确信息,并且只使用提供的信息。我的例子是在酒吧。想象一下,你想在酒吧喝啤酒。从理论上讲,调酒师应该要求您提供年龄证明。你是如何证明的?好吧,一个选择是让调酒师把你减半并计算戒指的数量,但可能存在一些问题。另一种选择是让你在一张纸上写下你的生日,酒保赞同或不赞成。第三种选择是去政府,拿到身份证,然后将身份证明呈现给调酒师。

有些人可能会嘲笑在一张纸上写下你的生日礼物的想法,但是当你在应用程序本身中对用户进行身份验证时会发生这种情况,因为这取决于调酒师(或你的应用程序)是否相信一张纸。但是,我们相信政府声称身份证上的生日是有效的,而身份证则是请求饮酒的人。出于所有意图和目的,调酒师(或应用程序)并不真正关心由于信任而如何进行身份验证。除了你的出生日期之外,调酒师对你一无所知,因为那是调酒师需要知道的全部内容。现在,调酒师可以存储他们认为对他们很重要的信息,比如你最喜欢的饮料,但是政府并不关心(因为它不是权威来源),所以酒保以他自己的方式存储这些信息。 / p>

CBA的关键是“谁是身份的权威来源?”

答案 1 :(得分:127)

(这是我对此的个人看法,其他人可能会有所不同。请将其他观点作为单独的答案发布。)

基于声明的身份/身份验证/授权是通过将身份验证/授权转换为单独的(Web)服务,将用户授权的维护和用户登录从(Web)应用程序中分离出来。

例如,当我第一次浏览启用声明的Web应用程序时,它会将我的浏览器重定向到它信任的“登录服务”。我将对该服务进行身份验证(使用Windows身份验证,智能卡或其他),作为响应,它会发回一个“令牌”,浏览器会将该令牌发送回Web应用程序。现在,Web应用程序检查该令牌是否由其受信任的登录服务进行数字签名,然后查看令牌中的“声明”。纯粹基于这些声明,应用程序决定用户提供的功能。

声明几乎总是包含用户的身份,通常还有与授权相关的声明('此用户可能会查看销售数据,但不会更新它'),有时还会包含其他信息('鞋码= 42' )。

关键是应用程序不知道也不关心用户的身份验证方式,也不管如何管理授权:它只使用签名令牌中的声明信息来确定用户是谁和/或用户可以看到或做和/或关于用户的任何其他信息。

(是的,我假设一个非常聪明且知情的5岁儿童。: - )

答案 2 :(得分:38)

以下真实示例来自A Guide to Claims-Based Identity and Access Control (2nd Edition)

  

一个非常熟悉的类比是您遵循的身份验证协议   你去机场的时间。你不能简单地走到大门口   出示您的护照或驾驶执照。相反,你必须先   在售票柜台办理登机手续。在这里,您提供任何凭证   说得通。如果你要去海外,你出示护照。对于   国内航班,您出示驾驶执照。验证后   您的图片ID与您的面部(身份验证),代理商相匹配   查找您的航班并验证您是否已支付机票费用   (的授权)。假设一切正常,您将收到登机牌   你带到门口。

     

登机牌非常有用。门   代理商知道您的姓名和常旅客号码(身份验证和   个性化),您的航班号和座位优先权   (授权),甚至更多。门代理商有   他们有效地完成工作所需的一切。

     

还有   登机牌的特殊信息。它在条形码中编码   代码和/或背面的磁条。这个信息(如   登机序列号)证明该通行证是由   航空公司并不是伪造品。

     

实质上,登机牌是签名的   航空公司对您提出的一系列索赔。它表明你是   允许在特定时间登上特定的航班并坐在一个   特别的座位。当然,代理商不需要深入思考   对这个。他们只是验证您的登机牌,阅读索赔   在它上面,让你登上飞机。

     

同样重要的是要注意到这一点   获得签名的索赔可能有多种方式   那是你的登机牌。你可以去票务柜台   机场,或者您可以使用该航空公司的网站并打印您的   在家登机牌。登机的登机代理商并不关心   如何创建登机牌;他们不关心你是哪个发行人   使用,只要它受到航空公司的信任。他们只关心它   是一套真实的声明,允许你获得   平面上。

     

在软件中,此声明捆绑称为安全令牌。每   安全令牌由创建它的发行者签署以索赔为基础   应用程序认为用户在提供有效身份时进行身份验证,   来自受信任颁发者的签名安全令牌

答案 3 :(得分:17)

对于一个5岁的男孩,请他假设他通过父母签署申请来加入新学校。经学校管理层批准后,他获得了一张访问卡,其中包含以下所有信息,我们可以将其称为索赔,以便进入学校。

  1. BOY的名字是BOB。
  2. 学校名称是MONTISSORI高中
  3. CLASS IS 8TH GRADE
  4. 在他上学的第一天,当他走进学校时,他刷了门禁卡,大门打开了,这意味着他已被宣称是学校里的一个人。通过这种方式,他是一名进入学校的认证人员。

    到达他的班级后,他使用门禁卡进入每个班级,但在8号标准舱门开启,因为他声称是第8标准。

    在学校,他只是被授权进入他的班级,因为他现在正在学习第8个标准。如果他试图进入第六标准,那么学校老师就不会授权他。

答案 4 :(得分:9)

尽可能不技术:

如果你要描述一下你是谁以及你被允许看到或做什么,那么每一件事都是你“声称”是真实的,因此该列表上的每个“事物”都会是一个“索赔”。

每当你告诉某人你自己的某些事情或“声称”你被允许看到或做某事时,你都可以将他们的索赔列表交给他们。他们将与权威机构核实您的声明是否属实,如果是,他们会相信该声明列表中的任何内容。因此,如果你声称自己是布拉德皮特,你的索赔清单就说你是布拉德皮特,并且经过权威机构验证你的说法都是真的 - 那么他们就会相信你是布拉德皮特和该列表中的任何其他内容。

声明:您声称属实。这可以是您要求拥有的许可的一条信息或描述。您提出索赔的系统只需要了解索赔是什么/意味着什么,并且还能够与权威机构进行核实。

权限:将您的权利要求列表放在一起并签名的系统,基本上说“在我的权限下,此列表中的所有内容都是真的”。只要阅读权利要求的系统可以与权威机构核实签名是否正确,那么权利要求列表中的所有内容都将被视为真实和真实。

另外,我们不要将其称为“基于声明的身份验证”,而是将其称为“基于声明的身份”。

稍微提高技术性:

所以现在在这个过程中,您使用某种机制(用户名/密码,客户端密钥,证书等)进行身份验证并为您提供证明您就是您所说的人的令牌是。然后,您将该访问令牌换成ID令牌。该流程将使用您的身份查找并构建声明列表,对其进行签名,然后再将您的所有声明提交给ID令牌。

作为授权步骤,根据其实现方式,资源将查看您的ID令牌(声明),然后检查您是否拥有访问该资源的必要声明。

因此,例如,如果资源“CastleBlack / CommandersTower”说“你必须能够访问城堡黑并成为领主指挥官,那么它会查看你的声明列表,看看这两件事是否都是真的

如你所见,“索赔”可以是任何东西。它可以是一个角色,它可以是一个事实,它可以是一面旗帜。它只是一个键值对列表,“值”是可选的。有时只是看看索赔是否存在:

claims : [
    {"type": "name", "value": "Jon Snow"},
    {"type": "home", "value": "Winterfell, The North, Westeros"},   
    {"type": "email", "value": "jon@nightswatch-veterans.org"},
    {"type": "role", "value": "veteran;deserter;"},
    {"type": "department", "value": "none"},    
    {"type": "allowEntry", "value": "true"},
    {"type": "access", "value": "castleblack;eastwatch;"}
]

因此,如果Jon登录并尝试访问上述资源,他将被拒绝,因为虽然他是他所说的他并且他确实可以使用黑色城堡,但他不再是领主,也不是明确进入指挥官的塔楼,因此不能隐含地进入领主指挥官的塔楼。

更具体地说,“CastleBlack”可能是一个[更大]的范围,每个区域都是一个特定的权限,但这是一个不同的讨论。

每个应用程序如何处理访问权限将会有所不同,但它会使用声明来执行此操作。

答案 5 :(得分:5)

考虑到声明是一个属性,告诉您有关用户的信息(名称,年龄,种族等),您使用安全令牌服务来验证这些声明,并将其用于除身份验证之外的授权。

以下摘录摘自维基百科(http://en.wikipedia.org/wiki/Claims-based_identity)及其迄今为止我发现的最佳类比

“为了更好地理解安全令牌服务的概念,可以考虑一个带门卫的夜总会的类比。门卫想要防止未成年的顾客进入。为了方便这一点,他要求一位顾客出示驾驶执照,由可信赖的第三方(安全令牌服务)签发的健康保险卡或其他身份证明(令牌),如省或州车辆执照部门,卫生部门或保险公司。夜总会因此减轻了责任确定顾客的年龄。它只需要信任发证机关(当然也要对发出的令牌的真实性做出自己的判断)。通过完成这两个步骤,夜总会已成功验证了顾客关于他或她有合法的饮酒年龄。

继续比喻,夜总会可能有会员制,某些会员可能是常客或贵宾。门卫可能会要求另一个令牌,即会员卡,可能会提出另一个要求;该成员是VIP。在这种情况下,令牌的受信任发布机构可能是俱乐部本身。如果会员卡声称赞助人是贵宾,那么俱乐部可以做出相应的反应,将经过认证的VIP会员权利要求转换为许可,例如允许顾客坐在专属休息区,并享用免费饮料。