identity server4獲取token和userInfo

1、簡介

IdentityServer4(ids4)是用於ASP.NET Core的OpenID Connect和OAuth 2.0框架。在許多成熟的.net core框架中都完美的集成的該身份服務框架,用於提供單一的身份受權服務和簡單的配置。ids4十分適用於分佈式和微服務系統的身份驗證,本篇就介紹一下ids4在微服務框架中如何獲取token和userInfo。web

2、開始前

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框架是存在很多風險的。數據庫

3、獲取token

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作新的配置,方便你們實際體驗。分佈式

step1:添加client_id

ids4官方有提供Admin UI管理,可是價格昂貴就不考慮了。深度使用的話能夠基於ids4提供的ef core程序集進行身份管理開發,abp vNext中彷佛對ids4進行了身份管理開發,可是接口並未發佈。若是隻是簡單身份配置的話建議在abp vNext受權服務的種子文件中進行身份添加而後使用ef core還原到數據庫。不想去折騰abp vNext微服務框架,直接修改數據庫也是能夠的。ide

step2:配置client_id發放token方式(ClientGrantType)

ids4提供的token發放方式有多種,web開發中使用password方式發放token。微服務

step3:配置client加密(ClientSecret)

ids4基於client發放token,因此獲取token也須要提供client密碼。post

以上配置都可以在abp vNext受權服務種子文件中進行添加。直接修改數據庫須要對ids4數據庫中的如下表進行前後修改:IdentityServerClients、IdentityServerClientGrantTypes、IdentityServerClientSecrets學習

step4:獲取token

啓動服務後使用postman獲取token參數以下:加密

 

 token:

 

 4、獲取userInfo

ids4提供了便捷的userInfo獲取方式,用於其餘系統獲取用戶信息。

step1:配置openid

使用abp vNext受權服務ids4種子文件能夠直接配置openid,直接修改數據庫須要在ids4數據庫的IdentityServerClientScopes表中進行配置。

step2:獲取userInfo

使用postman獲取userInfo參數以下:

 

 userInfo:

 

 userInfo輸出了用戶id和姓名,配置openid信息在IdentityServerIdentityClaims表中。

5、總結

identity server4獲取token和userInfo的方式介紹完了,強烈推薦使用abp框架研究配置和應用ids4,喜歡折騰的朋友也能夠參考ids4官方demo。ids4框架十分強大複雜,筆者不推薦從頭學習,我的應該以學習如何配置和應用爲主。後續我會介紹更多ids4的使用技巧和ids4在微服務中的應用,喜歡的朋友能夠持續關注下。。。

相關文章
相關標籤/搜索