OAuth2.0的上风是安全,随意马虎集成各种三方运用,不用共享密码,各种技能栈对OAuth的支持比较好。
基本观点首先弄清楚什么是认证,什么是授权。
认证Authentication(AuthN):是表明你是谁
授权Authorization(AuthZ):讲的是你能做什么
然后须要澄清的是OAuth不是共享密码的机制和协议,乃至不是个登录流程,也不建立用户ID。OAuth是一个共享授权的框架。
大致授权过程:OAuth客户端重定向到OAuth server,用户登录OAuth server,授权客户端(显示指定访问范围scope),天生access token给客户端。OAuth客户端就可以利用该access token访问用户受保护的数据。可随时撤销授权。不用共享密码给第三方,这是最关键的。
OAuth的参与者OAuth2.0的各参与者:
Resource Owner:常日是用户Client:要求访问的运用Resource Server: 用来存放受保护的数据和账号Authorization server:授权token的做事OAuth干系术语:OAuth core在RFC 6749 中定义
授权过程称作 flow 或grant type
通过scope来划分不同权限,scope表示许可我做什么,是一组权限,用户可以用来许可(grant)运用代表他们干工作。
Claim:token中的key/value对,包含客户端信息,不在OAuth core中定义。
对scopes和claims的标准化:
医疗领域
Heart working group http://openid.net/wg/heartFHIR http://www.h17.org/implement/standards/fhir金融领域:
Finacial API http://openid.net/wg/fapi通过access token答应运用访问受保护的数据。
OAuth core只规定了比较大略的定义,但是OAuth可扩展,各个供应商可以有不一样的实现。
关于TokenAccess token :运用用来访问受保护的数据的一组字符串,没有正式的格式哀求;代表详细的scope和过期韶光;被owner授权。
Refresh token:当access token过期的时候,运用用来要求新的access token;也用来处理用户deactive的情形。
ID token:OpenId connect core中定义,针对用户profile信息而设计
JSON Web Token:简写为JWT RFC 7519中定义,给没有标准格式的token定义了格式,个中定义了:
iss 发行者,sub:subject(user),aud:audience谁来利用这个token,exp token过期韶光OAuth和别的技能比较:1.SAML:自2002年定义,紧张用来做单点登录(SSO)。基于XML,有比较重的有效载荷payload,以是对移动端不友好,不是设计用来做代理访问的。OAuth有saml扩展。
2.API key:大略,通用,随意马虎实现,难于管理和刷新。
3.Account id +secret :和上面的API key 类似。
4.OAuth2.0:随意马虎代理可选择的访问权限,随意马虎撤销授权,通用,被很多技能栈支持,不随意马虎理解。OAuth2.0可用于用户或设备及做事。
5.OpenID connect(OIDC): 在OAuth之上的大略的ID扩展,定义了共享的详细字段(地址,电话号码,email等),只用于用户。
Grant Type分类1.授权码的办法
Authorization code:是最常用的grant办法,基本流程如下
2.隐式指定
Implicit:常用于web app和移动app,基本流程如下
3.客户端凭据
Client credentials:常用于系统对系统的访问
OAuth的endpoint:
OAuth core只定义了两个端点:
/authorize 用户(资源拥有者)用来给运用授权,可以返回授权码或access token/token 运用用来交流授权码或刷新token在RFC 7009中定义了废除token的端点:
/revoke 废除token,对access/refresh token都有效在RFC 7662中定义了查看token的端点:
/introspection 查看token ,是否active ,是否已回收,是否有效在RFC 7591中定义了注册新的客户真个端点:
/register 创建OAuth clients(client_id,client_secret)用来配置新的运用或用户在OpenID Connect Core中定义了获取用户信息的端点:
/userinfo 获取用户profile还在事情中的草案,用于做事端创造:
/ .well-known/openid-configuration框架和措辞对OAuth2.0的支持Spring security
对OAuth有良好的支持,详细情形参照网站
NodeJS
Github上开源的NodeJS库
PHP
OAuth2.0 server,基于PHP的OAuth2做事器