IdentityServer4(ids4)是用於ASP.NET Core的OpenID Connect和OAuth 2.0框架。在許多成熟的.net core框架中都完美的集成的該身份服務框架,用於提供單一的身份受權服務和簡單的配置。ids4十分適用於分佈式和微服務系統的身份驗證,本篇就介紹一下ids4在微服務框架中如何獲取token和userInfo。web
ids4提供的token默認JWT格式,.net core中也對JWT作了完美支持。這裏不建議你們本身在項目中集成ids4框架,最好選擇abp、abp vNext框架或ids4 demo進行試驗。abp和abp vNext框架中都對ids4和JWT作了完美的集成。特別是abp vNext微服務框架,該框架不只對ids4和ocelot等框架進行了集成,還將微服務的身份驗證進行了統一的受權,並作了單一的受權服務可對外提供open id。推薦abp框架的目的是能夠免去學習.net core身份機制和IdentityServer4框架的痛苦,目前關於ids4的踩坑資料並很少,因此若是我的去集成ids4框架是存在很多風險的。數據庫
ids4 提供的令牌端點:app
POST /connect/token client_id=client1& client_secret=secret& grant_type=authorization_code& code=hdh922& redirect_uri=https://myapp.com/callback
上面只是獲取token的示例,實際開發中不會這樣配置。框架
個人示例使用的是abp vNext微服務中的受權服務,並無在.net core中單獨集成ids4 和JWT。示例中我會對client_id和grant_type作新的配置,方便你們實際體驗。分佈式
ids4官方有提供Admin UI管理,可是價格昂貴就不考慮了。深度使用的話能夠基於ids4提供的ef core程序集進行身份管理開發,abp vNext中彷佛對ids4進行了身份管理開發,可是接口並未發佈。若是隻是簡單身份配置的話建議在abp vNext受權服務的種子文件中進行身份添加而後使用ef core還原到數據庫。不想去折騰abp vNext微服務框架,直接修改數據庫也是能夠的。ide
ids4提供的token發放方式有多種,web開發中使用password方式發放token。微服務
ids4基於client發放token,因此獲取token也須要提供client密碼。post
以上配置都可以在abp vNext受權服務種子文件中進行添加。直接修改數據庫須要對ids4數據庫中的如下表進行前後修改:IdentityServerClients、IdentityServerClientGrantTypes、IdentityServerClientSecrets學習
啓動服務後使用postman獲取token參數以下:加密
token:
ids4提供了便捷的userInfo獲取方式,用於其餘系統獲取用戶信息。
使用abp vNext受權服務ids4種子文件能夠直接配置openid,直接修改數據庫須要在ids4數據庫的IdentityServerClientScopes表中進行配置。
使用postman獲取userInfo參數以下:
userInfo:
userInfo輸出了用戶id和姓名,配置openid信息在IdentityServerIdentityClaims表中。
identity server4獲取token和userInfo的方式介紹完了,強烈推薦使用abp框架研究配置和應用ids4,喜歡折騰的朋友也能夠參考ids4官方demo。ids4框架十分強大複雜,筆者不推薦從頭學習,我的應該以學習如何配置和應用爲主。後續我會介紹更多ids4的使用技巧和ids4在微服務中的應用,喜歡的朋友能夠持續關注下。。。