identity server4获取token和userInfo
一、簡(jiǎn)介
IdentityServer4(ids4)是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架。在許多成熟的.net core框架中都完美的集成的該身份服務(wù)框架,用于提供單一的身份授權(quán)服務(wù)和簡(jiǎn)單的配置。ids4十分適用于分布式和微服務(wù)系統(tǒng)的身份驗(yàn)證,本篇就介紹一下ids4在微服務(wù)框架中如何獲取token和userInfo。
二、開(kāi)始前
ids4提供的token默認(rèn)JWT格式,.net core中也對(duì)JWT做了完美支持。這里不建議大家自己在項(xiàng)目中集成ids4框架,最好選擇abp、abp vNext框架或ids4 demo進(jìn)行試驗(yàn)。abp和abp vNext框架中都對(duì)ids4和JWT做了完美的集成。特別是abp vNext微服務(wù)框架,該框架不僅對(duì)ids4和ocelot等框架進(jìn)行了集成,還將微服務(wù)的身份驗(yàn)證進(jìn)行了統(tǒng)一的授權(quán),并做了單一的授權(quán)服務(wù)可對(duì)外提供open id。推薦abp框架的目的是可以免去學(xué)習(xí).net core身份機(jī)制和IdentityServer4框架的痛苦,目前關(guān)于ids4的踩坑資料并不多,所以如果個(gè)人去集成ids4框架是存在不少風(fēng)險(xiǎn)的。
三、獲取token
ids4 提供的令牌端點(diǎn):
POST /connect/token
client_id=client1&
client_secret=secret&
grant_type=authorization_code&
code=hdh922&
redirect_uri=https://myapp.com/callback
上面只是獲取token的示例,實(shí)際開(kāi)發(fā)中不會(huì)這樣配置。
我的示例使用的是abp vNext微服務(wù)中的授權(quán)服務(wù),并沒(méi)有在.net core中單獨(dú)集成ids4 和JWT。示例中我會(huì)對(duì)client_id和grant_type做新的配置,方便大家實(shí)際體驗(yàn)。
step1:添加client_id
ids4官方有提供Admin UI管理,但是價(jià)格昂貴就不考慮了。深度使用的話可以基于ids4提供的ef core程序集進(jìn)行身份管理開(kāi)發(fā),abp vNext中似乎對(duì)ids4進(jìn)行了身份管理開(kāi)發(fā),但是接口并未發(fā)布。如果只是簡(jiǎn)單身份配置的話建議在abp vNext授權(quán)服務(wù)的種子文件中進(jìn)行身份添加然后使用ef core還原到數(shù)據(jù)庫(kù)。不想去折騰abp vNext微服務(wù)框架,直接修改數(shù)據(jù)庫(kù)也是可以的。
step2:配置client_id發(fā)放token方式(ClientGrantType)
ids4提供的token發(fā)放方式有多種,web開(kāi)發(fā)中使用password方式發(fā)放token。
step3:配置client加密(ClientSecret)
ids4基于client發(fā)放token,所以獲取token也需要提供client密碼。
以上配置均可以在abp vNext授權(quán)服務(wù)種子文件中進(jìn)行添加。直接修改數(shù)據(jù)庫(kù)需要對(duì)ids4數(shù)據(jù)庫(kù)中的以下表進(jìn)行先后修改:IdentityServerClients、IdentityServerClientGrantTypes、IdentityServerClientSecrets
step4:獲取token
啟動(dòng)服務(wù)后使用postman獲取token參數(shù)如下:
token:
四、獲取userInfo
ids4提供了便捷的userInfo獲取方式,用于其他系統(tǒng)獲取用戶信息。
step1:配置openid
使用abp vNext授權(quán)服務(wù)ids4種子文件可以直接配置openid,直接修改數(shù)據(jù)庫(kù)需要在ids4數(shù)據(jù)庫(kù)的IdentityServerClientScopes表中進(jìn)行配置。
step2:獲取userInfo
使用postman獲取userInfo參數(shù)如下:
userInfo:
userInfo輸出了用戶id和姓名,配置openid信息在IdentityServerIdentityClaims表中。
五、總結(jié)
identity server4獲取token和userInfo的方式介紹完了,強(qiáng)烈推薦使用abp框架研究配置和應(yīng)用ids4,喜歡折騰的朋友也可以參考ids4官方demo。ids4框架十分強(qiáng)大復(fù)雜,筆者不推薦從頭學(xué)習(xí),個(gè)人應(yīng)該以學(xué)習(xí)如何配置和應(yīng)用為主。后續(xù)我會(huì)介紹更多ids4的使用技巧和ids4在微服務(wù)中的應(yīng)用,喜歡的朋友可以持續(xù)關(guān)注下。。。
總結(jié)
以上是生活随笔為你收集整理的identity server4获取token和userInfo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: excel如何删除某一种文本(Excel
- 下一篇: 电脑pin是什么意思