客戶端可以從你的IDS伺服器請求tokens。
通常,客戶端需要遵循下面的通用設定:
-
一個唯一的Client ID
-
如果需要還可以提供密碼
-
允許與token服務互動(授權型別)
-
identity 和/或 token被髮送到的網路位置(redirect URI)
-
客戶端允許訪問的scopes清單(resources)
Note:
在執行時,客戶端通過實現IClientStore來檢索。它允許在任意資料資源中載入比如配置檔案或者資料庫。此文件將使用記憶體版本進行客戶端儲存。你可以在ConfigureServices通過AddInMemoryClients額外方法連線記憶體儲存。
定義一個伺服器到伺服器通訊的客戶端
在這種情況(scenario)下沒有互動使用者,服務端(這裡是客戶端)想和API(Scope)通訊:
public class Clients { public static IEnumerable<Client> Get() { return new List<Client> { new Client { ClientId = "service.client", ClientSecrets = { new Secret("secret".Sha256()) }, AllowedGrantTypes = GrantTypes.ClientCredentials, AllowedScopes = { "api1", "api2.read_only" } } }; } }
定義基於瀏覽器的JavaScript客戶端(例如SPA)以進行使用者認證和授權訪問和API
var jsClient =new Client { ClientId="js", ClientName="" ClientName = "JavaScript Client", ClientUri = "http://identityserver.io", AllowedGrantTypes = GrantTypes.Implicit, AllowAccessTokensViaBrowser = true, RedirectUris = { "http://localhost:7017/index.html" }, PostLogoutRedirectUris = { "http://localhost:7017/index.html" }, AllowedCorsOrigins = { "http://localhost:7017" }, AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, IdentityServerConstants.StandardScopes.Email, "api1", "api2.read_only" } }
定義伺服器端Web應用程式(例如MVC)以進行使用驗證和授權API訪問
互動式伺服器端(或本地桌面/移動)應用程式使用混合流。此流程為您提供最佳的安全性,因為訪問令牌僅通過反向通道呼叫傳輸(並允許您訪問重新整理令牌)
var mvcClient = new Client { ClientId = "mvc", ClientName = "MVC Client", ClientUri = "http://identityserver.io", AllowedGrantTypes = GrantTypes.Hybrid, AllowOfflineAccess = true, ClientSecrets = { new Secret("secret".Sha256()) }, RedirectUris = { "http://localhost:21402/signin-oidc" }, PostLogoutRedirectUris = { "http://localhost:21402/" }, FrontChannelLogoutUri = "http://localhost:21402/signout-oidc", AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, IdentityServerConstants.StandardScopes.Email, "api1", "api2.read_only" }, };