Я создаю новую службу токенов безопасности (на которой запущен IdentityServer4 в ASP.NET Core), и мне нужно предоставить пользователям, входящим в систему, доступ к приложениям только для определенных API.
Пока что я могу позволить пользователям войти в JS-клиент и получить авторизацию / аутентификацию с доступом к API-интерфейсам, настроенным в качестве разрешенных областей в службе токенов для этого конкретного JS-клиента.
Что я хочу сделать, так это настроить каждого пользователя для доступа только к определенным API-интерфейсам, а не ко всем API-интерфейсам в разрешенных областях.
Я новичок в этом, поэтому я даже не уверен, что задаю правильный вопрос. Но я надеюсь, что это все еще понятно и с радостью ответит на любой вопрос.
Как определить моего пользователя в службе токенов:
new TestUser
{
SubjectId = "05624",
Username = "asd",
Password = "asd",
Claims = new []
{
new Claim("name", "My Name"),
new Claim("email", "myname@email.net")
}
}
Как определить мой клиент в службе токенов:
new Client
{
ClientId = "js-demo"
AllowedGrantTypes = GrantTypes.Code,
AllowedScopes =
{
"openid",
"api_1",
"api_2"
},
AllowedCorsOrigins = { "http://localhost:5000" },
RedirectUris = { "http://localhost:5000/callback.html" },
PostLogoutRedirectUris = { "http://localhost:5000/index.html" },
RequirePkce = true,
RequireClientSecret = false,
AllowAccessTokensViaBrowser = true
}
Как определить ресурс API в службе токенов:
new List<ApiResource>
{
new ApiResource("api_1"),
new ApiResource("api_2")
};
Как определить мой клиентский интерфейс:
var config = {
client_id: "js-demo",
response_type: "code",
scope: "openid api_1 api_2",
authority: "http://localhost:9999",
redirect_uri: "http://localhost:5000/callback.html",
post_logout_redirect_uri: "http://localhost:5000/index.html"
};