当前位置: 首页 > 科技观察

如何理解授权框架OAuth2.1

时间:2023-03-14 17:17:42 科技观察

译者|李蕊点评|孙淑娟资源。客户端通过将资源所有者的凭据传递给资源服务器来执行此操作,并且资源服务器在提供对受保护资源的访问之前对其进行身份验证。看起来很简单,对吧?但是这个模型有很多问题,下面列出了其中的一些:客户端需要存储资源所有者的凭据以备将来使用。如果资源所有者有多个客户端,则需要将相同的凭据分发给所有客户端。资源所有者无法轻易撤销一个客户端的访问权限,因为它将要求其所有客户端使用资源所有者的新凭据更新其数据库。如果一个客户端的数据库遭到破坏(因此资源所有者的凭据丢失),它会影响所有客户端。没有简单的方法可以将客户端限制为资源所有者的资源子集,从而为他们提供过于广泛的访问权限。OAuth2.0框架通过引入一个授权层解决了这些问题,该层消除了客户端与资源所有者拥有相同凭证的需要,而是允许他们使用访问令牌来访问资源所有者的资源。例如,最终用户(资源所有者)可以授予文档打印服务(客户端)访问其存储在文档服务器(资源服务器)中的文档(资源)的权限,而无需与文档打印服务共享其凭据。最终用户无需共享其凭据,而是可以通过与同样受文档打印服务信任的另一方(授权服务器)确认来批准客户端的文档访问请求。作为回报,授权服务器与文档打印服务共享访问令牌,以访问最终用户在文档服务器上的文档。OAuth角色(1)资源所有者——拥有资源的实体。它能够授予对资源的访问权限。(2)资源服务器——托管受保护资源的实体。它有能力拒绝或允许访问资源所有者的受保护资源。(3)客户——寻求访问(和操作)受保护资源的实体。(4)授权服务器——协调认证和授权的实体。协议流程A.客户端请求资源所有者授予对各种资源的访问权限。客户端要么直接询问资源所有者(如上所示),要么使用授权服务器作为中介。B.资源所有者通过返回称为授权授予的东西来响应。资源可以选择以四种不同的授权类型之一或扩展的授权类型来响应。C.然后使用此授权向授权服务器请求访问令牌。D.授权服务器验证授权,如果有效,则使用访问令牌(以及可选的刷新令牌)进行响应。E.客户端使用这个访问令牌向资源服务器请求资源。F.资源服务器验证令牌,如果有效,则为请求提供服务。AuthorizationConsent这是一个凭证,表示资源所有者授予客户端访问其受保护资源的授权。如前所述,这是与授权服务器共享的,以换取访问令牌。授权类型有四种:(1)授权码授权服务器是客户端和资源拥有者之间的中介。客户端不是直接从资源所有者那里寻求授权,而是将资源所有者重定向到授权服务器,资源所有者在授权服务器上进行身份验证。身份验证成功后,资源所有者将连同授权码一起重定向到客户端。这种授权类型有一些优点。资源所有者的凭据永远不会与客户端共享,因为资源所有者由授权服务器进行身份验证。访问令牌直接传输给客户端,不经过任何一方,包括资源所有者。(2)隐式授权在这种授权类型中,没有像授权码这样的中间凭证。这意味着一旦资源所有者通过授权服务器的身份验证,访问令牌就立即可供客户端使用。这肯定比授权代码授予类型更快,但具有安全隐患(例如可能将访问令牌暴露给资源所有者或其他有权访问资源所有者的用户代理的应用程序)。当授予的授权类型可用时,不建议使用此授权类型。(3)ResourceOwnerPasswordCredentials在这种授权类型中,客户端第一次使用资源所有者的凭证来获取访问令牌。一旦可用于后续资源请求,就会使用访问令牌。这消除了在客户端存储资源所有者凭据的需要。这在资源所有者与客户端有信任关系的情况下很有用。当授予的授权类型可用时,不建议使用此授权类型。(4)ClientCredentials当客户端控制资源或者他们也是资源所有者时,使用这种授权类型。在这种情况下,客户端的凭据(与授权服务器预先共享)用作授权许可以获取访问令牌。还有ExtendedGrantType,这是一种可扩展的机制,可以创建更多的授权类型。它超出了本文的范围。访问令牌访问令牌是用于访问资源服务器托管的资源所有者的受保护资源的凭据。它是一个包含安全且可验证的密钥授权信息的简单字符串。这也包含请求资源的范围和访问时间,可以由资源服务器或授权服务器强制执行。通常,这些令牌是经过签名的,这也有助于资源服务器验证客户端的身份。对于每个资源请求,访问令牌连同其他请求属性一起发送到资源服务器。此令牌的结构是特定于实现的,不受OAuth2.0规范的约束。RefreshToken这是客户端在当前访问令牌过期或无效时用于从授权服务器获取访问令牌的另一个凭证。由授权服务器自行决定发布刷新令牌。OAuth2.0是一个极其丰富的授权框架,在当今市场上有多种实现。它已被证明是安全的,并经受住了时间的考验,最近在许多组织中的采用证明了这一点。在以后的教程中,我们将通过一些工作示例深入研究这个框架。原标题:UnderstandingOAuth2.0,作者:SantanuBaruah