Добавить пользовательское утверждение для создания токена — сервер идентификации Duende
Я пытаюсь настроить свой сервер идентификации Duende (ранее известный как сервер идентификации 4) для аутентификации и авторизации. Что касается аутентификации, я использую внешнюю службу аутентификации, и в результате я получаю UserID . Затем я хочу добавить этот идентификатор пользователя в качестве пользовательского утверждения в свой токен доступа. Однако я не могу понять, как это делается.
В частности, я хочу реализовать что-то вроде этого:
// Client/program.cs
var client = new HttpClient();
var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
{
Address = https://localhost:5001/connect/token,
ClientId = "1",
ClientSecret = "secret",
Scope = "api1",
UserID = UserID // here is the problem. It creates the correct access token without this line
});
Проблема в том, что UserID не определен как часть RequestClientCredentialsTokenAsync .
Есть ли способ добавить его?
Заранее спасибо.
2 ответа
ClientCredentials Flow не предполагает никакого взаимодействия с пользователем, так как не будет никаких данных, связанных с зарегистрированными пользователями.
Вы можете использовать устаревший поток ResourceOwnerPassword , который использует имя пользователя и пароль для проверки подлинности. Ваш текущий подход связан с взаимодействием между серверами.
Вы не сможете отправлять какие-либо пользовательские параметры, используя учетные данные клиента.
Вместо этого вы можете создать собственное разрешение для своего сценария, используя интерфейс IExtensionGrantValidator.
Вы можете отправить дополнительные параметры с помощью RequestTokenAsync.
var client = new HttpClient();
var response = await client.RequestTokenAsync(new TokenRequest
{
Address = "https://identityUrl/connect/token",
GrantType = "customgrant",
ClientId = "clientid",
ClientSecret = "secret",
Parameters =
{
{ "customParameter", "custom value"},
{ "scope", "api1" }
}
});
Дополнительную информацию можно найти в этом документе. Предоставление расширения в Identity Server.