Существует три основных типа клиентов. Официальный документ для идентификационных клиентов Ссылка Github для кода образца официальной идентификационной информации
Определение клиента для связи между серверами
В этом сценарии нет интерактивного пользователь присутствует - служба (он же клиент) хочет связаться с API (он же видимость):
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
Этот клиент использует так называемый неявный поток для запроса идентификатора и токена доступа у JavaScript:
var jsClient = new Client
{
ClientId = "js",
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"
}
};
Определение серверного веб-приложения (например, MVC) для аутентификация пользователя и делегированный доступ к API
Интерактивные серверные (или собственные настольные / мобильные) приложения используют гибридный поток. Этот поток обеспечивает вам максимальную безопасность, поскольку токены доступа передаются только через вызовы обратного канала (и дает вам доступ к refre sh токенам):
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"
},
};
Определение клиентов в настройках приложения. json
Метод расширений AddInMemoryClients
также поддерживает добавление клиентов из файла конфигурации ASP. NET Core. Это позволяет вам определять клиентов stati c непосредственно из настроек приложения. json file:
"IdentityServer": {
"IssuerUri": "urn:sso.company.com",
"Clients": [
{
"Enabled": true,
"ClientId": "local-dev",
"ClientName": "Local Development",
"ClientSecrets": [ { "Value": "<Insert Sha256 hash of the secret encoded as Base64 string>" } ],
"AllowedGrantTypes": [ "implicit" ],
"AllowedScopes": [ "openid", "profile" ],
"RedirectUris": [ "https://localhost:5001/signin-oidc" ],
"RequireConsent": false
}
]
}
Затем передать раздел конфигурации методу AddInMemoryClients
: In Startup.cs
AddInMemoryClients(configuration.GetSection("IdentityServer:Clients"))
Список подкатегорий или подробных клиентов:
1. Учетные данные клиента:
2. Владелец ресурса клиента
3. JS OID C Клиент
4. JS Клиент OAuth
5. MVC Гибридный клиент
6. MVC Скрытый клиент