Я создал проект IdentityServer (B) с этой конфигурацией:
new Client
{
ClientId = "ro.client",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
ClientSecrets =
{
new Secret("secret".Sha256())
},
AllowedScopes = { "api1" }
}
И у меня есть проект B с его пользовательской страницей входа. Когда пользователь вводит свой пароль и пароль, я отправляю этоинформация для бэкэнда проекта B, и с помощью этого кода я могу получить токен с сервера идентификации - проект A:
var client = new HttpClient();
var disco = await client.GetDiscoveryDocumentAsync(_configuration["App:Authority"]);
if (disco.IsError)
{
throw new System.Exception("get info from identity server is failed.");
}
var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
{
Address = disco.TokenEndpoint,
ClientId = "ro.client",
ClientSecret = "secret",
UserName = "bob",
Password = "Pass123$",
Scope = "api1"
});
var accessToken = tokenResponse.AccessToken;
Теперь я хочу добиться того, чтобы каким-то образом я сделал этого пользователя авторизованным и сохранил токен вcookie, поэтому, когда этот пользователь вызывает другое действие с атрибутом authorize, он не перенаправляется на страницу входа.Как мне этого добиться?