OIDC–基于OAuth2的下一代身份认证授权协议

OIDC(OpenID Connect), 下一代的身份认证授权协议; 当前发布版本1.0;

OIDC是基于OAuth2+OpenID整合的新的认证授权协议; OAuth2是一个授权(authorization)的开放协议, 在全世界得到广泛使用, 但在实际使用中,OAuth2只解决了授权问题, 没有实现认证部分,往往需要添加额外的API来实现认证; 而OpenID呢,是一个认证(authentication )的协议, 二者在实际使用过程中都有其局限性;

综合二者,即是OIDC; 通过OIDC,既能有OAUTH2的功能,也有OpenID的功能; 恰到好处…

OIDC将是替换(或升级)OAuth2, OpenID的不二选择..

OIDC在OAuth2的access_token的基础上增加了身份认证信息; 通过公钥私钥配合校验获取身份等其他信息—– 即idToken;

一个使用JWT生成的idToken(base64):

eyJhbGciOiJSUzI1NiIsImtpZCI6IjM3MTc2NjA0OTExODEyNzkwNzgifQ.eyJpc3MiOiIxMTExIiwiYXVkIjoiMTExMSIsImF0X2hhc2giOiI4ZjgxYThjOS1jNWJiLTQwOWMtYjI0Ni1lMzEyZmUwYzM4NWMiLCJyZWdpc3RyYXRpb24iOiIxMjM0NTY3OCIsImV4cCI6MTQ2MzYyMjA4NiwianRpIjoiRnl5aGZOYnQtU0NLR2tpTWRGMVg2dyIsImlhdCI6MTQ2MzU3ODg4NiwibmJmIjoxNDYzNTc4ODI2LCJzdWIiOiJsc3otb2lkYyJ9.hDCcs8PISdwUPp6Eyd-9JCeeTJ2ZtscBeuPITIt43gMYbddiUBLC90uT9bxKe6e3awHels3asEMreFtlnlY09PwdCxXvhjYcEiXO_dnzqu-zQXESHzPEE6d1WsZUcbj6yxoxMh0laba24uu3CbqSRQbOrsYmh2_XA5Q5eP66iOajRUDhNXhmsWEL85jtL9_h0SyfRNPZ9C0mRu2x9YZTHT129O53ggqtjwQxrXLAbCd1dd35DyIztagqQWDpo3gFG7YseNEiQ6Mf2D6nIBU9llAqH4sTThq_ahME06qKENat_sxnmIJN2UHw7u0E08S-59oxtOY9winT78Qj5IfWJw

 

在OIDC协议的实现中, 其底层是基于OAuth2. 一些常用的库如: JWT(https://jwt.io/), JWS; OAuth2的实现如: Spring Security OAuth, OLTU.

更多信息可参考: http://openid.net/connect/

OIDC 1.0协议: http://openid.net/specs/openid-connect-core-1_0.html

拥抱OIDC…

openid-r-logo-900x360

钉铛 — 企业应用的钉钉连接器 SSO,免登录

钉铛是一个帮助企业方便快捷地将自身业务系统接入钉钉, 实现SSO(单点登录)的应用; 用于简化企业应用接入钉钉的技术难度与降低成本, 实现应用的免登与钉钉账号关联.

钉铛的设计图如下:

dd_flow

钉铛的具体流程图参考如下:

 

dd_impl

 

针对企业不同的应用及场景, 钉铛提供以下几种方式连接应用与钉钉:

  1. 用户密码代填(服务端)
    采用传统的账号名&密码进行服务端代填实现身份验证,服务器不需要进行改造即可实现免登服务
  2. JWT SSO(无密码)
    采用token进行身份信息传递,钉铛与应用服务之间不会传递密码,但是服务器需要进行少量的改动;提供有各种各样的库和样本代码:php, java, perl, c, c#, .net, ruby etc.
  3. 移动APP
    用于实现在钉钉中打开移动APP, 以及实现钉钉账号与移动APP之间的免登, 我们提供Android, IOS的APP SDK与DEMO程序帮助企业开发只需要很少的改动即可集成到钉钉中.

 

 

欢迎咨询

联系邮箱: zhao@idsmanager.com

http://idsmanager.com