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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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






創建項目

?

dotnet new -i IdentityServer4.Templates



多出來的這些模板

adminUI用來測試,想要用再生產環境,需要交錢

結合core的 Identity來使用

使用EF core把一些數據持久化到數據庫里了

內存來存儲信息

創建項目

創建一個內存里的項目叫做 Idp

VS打開項目



直接運行:


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

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

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

查看TestUser的源碼



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

往內存里添加 客戶端應用:

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

credential?憑證









授權類型是簡化模式

再看這兩行代碼:

進去看源碼:


表示的是Identity資源


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

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

目前這些都是寫死在代碼里 ,加載到內存里的。如果使用EFCode的模板,這些東西都可以存到數據庫里。
比較大的應用通常都是存到數據庫里

OAth的授權方式,前面四個可以用代碼來實驗


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


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


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

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

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



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

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




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


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

項目文件添加這句話


這個時候錯誤就沒有了。

如果報錯就輸出異常


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

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

方法里面需要一個參數ClientCrdentialsTokenRequest,這里面需要設置一些值



加斷點進行調試



錯誤類型

修改為正確的Secret

這次的錯誤信息是 invalid_scope

這是因為服務端的Scope是空的

把服務端的Scope修改為api1

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


這是AccessToken

訪問API


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


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

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

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

然后運行服務端

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

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



測試

首先服務端這么設置

客戶端這么設置

?
測試;請求失敗了


重新。服務端加上openid

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

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

建立APi1資源

使用VScode建立的一個新項目


返回用戶的Claims

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

這里一定要寫對了api1


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

端口改成5001

VSCode運行程序


設置控制臺的地址


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





控制臺訪問成功打印 輸出的結果。從api獲取的數據






?

轉載于:https://www.cnblogs.com/wangjunwei/p/10951962.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。