基於上一篇文章中的程式碼進行繼續延伸,只需要小小的改動即可,不明白的地方可以先看看本人上一篇文章及原始碼: Identity Server 4客戶端認證控制訪問API
一、QuickStartIdentityServer4專案中Config.cs增加如下配置
// 定義客戶端認證方式 public static IEnumerable<Client> Clients => new[] { // 客戶端認證 new Client { ClientId="sample_client", // 客戶端id ClientSecrets = { new Secret("sample_client_secret".Sha256()) // 客戶端祕鑰 }, AllowedGrantTypes=GrantTypes.ClientCredentials, // 授權型別為客戶端 AllowedScopes={ "sample_api" } // 設定該客戶端允許訪問的api範圍 }, // 資源擁有者認證 new Client { ClientId="sample_pass_client", // 客戶端id ClientSecrets = { new Secret("sample_client_secret".Sha256()) // 客戶端祕鑰 }, AllowedGrantTypes=GrantTypes.ResourceOwnerPassword, // 授權型別為資源擁有者 AllowedScopes={ "sample_api" } // 設定該客戶端允許訪問的api範圍 } };
二、Client專案中增加模擬請求資源擁有者認證,其他程式碼不變
// 資源擁有者認證 var tokenResponse = await client.RequestPasswordTokenAsync( new PasswordTokenRequest { Address = disco.TokenEndpoint, ClientId = "sample_pass_client", ClientSecret = "sample_client_secret", UserName="admin", Password="123" } );
三、專案測試
1、’postman模擬請求 http://localhost:5001/connect/token 獲取token
2、使用token請求api
3、Client專案模擬客戶端請求
學習連結:https://www.cnblogs.com/stulzq/p/7509648.html