IdentityServer4-客戶端定義-翻譯

franhome發表於2018-05-05

客戶端定義(Defining Client)

客戶端可以從你的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"
    },
};

 



 

相關文章