日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例...

發(fā)布時間:2025/3/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.






創(chuàng)建項目

?

dotnet new -i IdentityServer4.Templates



多出來的這些模板

adminUI用來測試,想要用再生產(chǎn)環(huán)境,需要交錢

結(jié)合core的 Identity來使用

使用EF core把一些數(shù)據(jù)持久化到數(shù)據(jù)庫里了

內(nèi)存來存儲信息

創(chuàng)建項目

創(chuàng)建一個內(nèi)存里的項目叫做 Idp

VS打開項目



直接運行:


這里看起來有點亂,這里顯示注釋掉

把上面這三被注釋的代碼放開注釋:

這里添加用戶,添加了一個測試用戶

查看TestUser的源碼



他是在代碼里寫死了兩個用戶;

往內(nèi)存里添加 客戶端應(yīng)用:

查看GetClients()這個方法的源碼

credential?憑證









授權(quán)類型是簡化模式

再看這兩行代碼:

進去看源碼:


表示的是Identity資源


Identity provider這個服務(wù)器上,它有一些用戶的身份認證信息,這些信息可以看做一種被保護的資源。只不過這個資源和Identity Server是在一起的
其他的APi資源沒有和Identity在一起。

相當于這里的Identity data 也相當于是一種資源,也是被保護的

目前這些都是寫死在代碼里 ,加載到內(nèi)存里的。如果使用EFCode的模板,這些東西都可以存到數(shù)據(jù)庫里。
比較大的應(yīng)用通常都是存到數(shù)據(jù)庫里

OAth的授權(quán)方式,前面四個可以用代碼來實驗


先從簡單的開始講,講第四個 Client Credentials:客戶端憑證,。然后再講Password的例子


把一些沒用的代碼刪除掉,。只保留一個Client然后進行修改


這里的api1先去掉,。不讓它訪問這個資源

把這個程序運行起來就可以不用管了。然后創(chuàng)建一個控制臺應(yīng)用
它作為Identity的客戶端應(yīng)用,

需要安裝一個庫
https://identityserver4.readthedocs.io/en/latest/quickstarts/1_client_credentials.html



包含了一個Client libiary,可以使用discovery endpoint.

discovery endpoint里面有什么東西呢?點擊這個運行起來的Identity4的例子頁面




Task.Run的寫法 需要手動捕獲異常


C#7.1以后還有一種簡便的方法:
這么寫報錯,然后查看錯誤

項目文件添加這句話


這個時候錯誤就沒有了。

如果報錯就輸出異常


因為使用的是ClientCrenditals客戶端憑據(jù)的方式,就需要提供這個憑據(jù)。就是加密用的這個字符串

這倆都是擴展方法,是剛才裝的Identity Model庫里面提供的

方法里面需要一個參數(shù)ClientCrdentialsTokenRequest,這里面需要設(shè)置一些值



加斷點進行調(diào)試



錯誤類型

修改為正確的Secret

這次的錯誤信息是 invalid_scope

這是因為服務(wù)端的Scope是空的

把服務(wù)端的Scope修改為api1

客戶端也改成api1。這樣就成功訪問到了。


這是AccessToken

訪問API


有了Access Token 就可以Call APi了。但是我們還有API資源。Identity Server 4上有一部分身份認證的資源。我們就先訪問這一部分資源
服務(wù)端需要配置一下,目前只允許訪問了api1資源,但是api1還不存在


IdentityResource里面分成了幾塊。點一下出來這些這5個

這里定義資源,只定義了兩個

設(shè)置允許訪問OpenId,這里就設(shè)置了允許訪問的兩個資源,一個是api1 一個是身份證資源里面的openId這個Scope

然后運行服務(wù)端

客戶端的修改:這里也加上openid都是小寫?Scope之間用空格分開

為什么都是小寫的呢 我們可以在服務(wù)端的代碼里面F12進去看源碼



測試

首先服務(wù)端這么設(shè)置

客戶端這么設(shè)置

?
測試;請求失敗了


重新。服務(wù)端加上openid

客戶端也加上openid,運行后還是錯誤的,這是為什么呢

clientCrdentails不代表任何用戶,而我這里卻想訪問身份認證的資源,身份認證資源就是對應(yīng)著用戶了。所以說這種訪問是合理的

建立APi1資源

使用VScode建立的一個新項目


返回用戶的Claims

官方文檔的代碼直接貼進來

這里一定要寫對了api1


需要身份證,然后需要使用mvc

端口改成5001

VSCode運行程序


設(shè)置控制臺的地址


然后再運行控制臺應(yīng)用
斷點就走到了 VScode的程序





控制臺訪問成功打印 輸出的結(jié)果。從api獲取的數(shù)據(jù)






?

轉(zhuǎn)載于:https://www.cnblogs.com/wangjunwei/p/10951962.html

總結(jié)

以上是生活随笔為你收集整理的Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。