identity server4獲取token和userInfo


一、簡介

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

二、開始前

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框架是存在不少風險的。

三、獲取token

ids4 提供的令牌端點:

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微服務框架,直接修改數據庫也是可以的。

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

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

step3:配置client加密(ClientSecret)

ids4基於client發放token,所以獲取token也需要提供client密碼。

以上配置均可以在abp vNext授權服務種子文件中進行添加。直接修改數據庫需要對ids4數據庫中的以下表進行先后修改:IdentityServerClients、IdentityServerClientGrantTypes、IdentityServerClientSecrets

step4:獲取token

啟動服務后使用postman獲取token參數如下:

 

 token:

 

 四、獲取userInfo

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

step1:配置openid

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

step2:獲取userInfo

使用postman獲取userInfo參數如下:

 

 userInfo:

 

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

五、總結

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM