OIDC是基于OAuth2+OpenID整合的新的認證授權(quán)協(xié)議; OAuth2是一個授權(quán)(authorization)的開放協(xié)議, 在全世界得到廣泛使用, 但在實際使用中,OAuth2只解決了授權(quán)問題, 沒有實現(xiàn)認證部分,往往需要添加額外的API來實現(xiàn)認證; 而OpenID呢,是一個認證(authentication )的協(xié)議, 二者在實際使用過程中都有其局限性;
綜合二者,即是OIDC; 通過OIDC,既能有OAUTH2的功能,也有OpenID的功能; 恰到好處…
OIDC將是替換(或升級)OAuth2, OpenID的不二選擇..
OIDC在OAuth2的access_token的基礎(chǔ)上增加了身份認證信息; 通過公鑰私鑰配合校驗獲取身份等其他信息—– 即idToken;
一個使用JWT生成的idToken(base64):
eyJhbGciOiJSUzI1NiIsImtpZCI6IjM3MTc2NjA0OTExODEyNzkwNzgifQ.eyJpc3MiOiIxMTExIiwiYXVkIjoiMTExMSIsImF0X2hhc2giOiI4ZjgxYThjOS1jNWJiLTQwOWMtYjI0Ni1lMzEyZmUwYzM4NWMiLCJyZWdpc3RyYXRpb24iOiIxMjM0NTY3OCIsImV4cCI6MTQ2MzYyMjA4NiwianRpIjoiRnl5aGZOYnQtU0NLR2tpTWRGMVg2dyIsImlhdCI6MTQ2MzU3ODg4NiwibmJmIjoxNDYzNTc4ODI2LCJzdWIiOiJsc3otb2lkYyJ9.hDCcs8PISdwUPp6Eyd-9JCeeTJ2ZtscBeuPITIt43gMYbddiUBLC90uT9bxKe6e3awHels3asEMreFtlnlY09PwdCxXvhjYcEiXO_dnzqu-zQXESHzPEE6d1WsZUcbj6yxoxMh0laba24uu3CbqSRQbOrsYmh2_XA5Q5eP66iOajRUDhNXhmsWEL85jtL9_h0SyfRNPZ9C0mRu2x9YZTHT129O53ggqtjwQxrXLAbCd1dd35DyIztagqQWDpo3gFG7YseNEiQ6Mf2D6nIBU9llAqH4sTThq_ahME06qKENat_sxnmIJN2UHw7u0E08S-59oxtOY9winT78Qj5IfWJw
在OIDC協(xié)議的實現(xiàn)中, 其底層是基于OAuth2. 一些常用的庫如: JWT(https://jwt.io/), JWS; OAuth2的實現(xiàn)如: spring Security OAuth, OLTU.