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 授权实例...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团面试题:缓存一致性,我是这么回答的!
- 下一篇: 这样写的,一定是辣鸡代码!