AuthenticationTicket SetResources / SetProperties, как я могу их использовать? - PullRequest
0 голосов
/ 28 января 2019

В настоящее время я создаю API, который должен использовать Identity Framework и OpenIddict для фактического входа пользователя в систему.

Я фактически создаю простой билет аутентификации, подобный этому

    private AuthenticationTicket CreateTicket(OpenIdConnectRequest connectRequest, OAuthApplication application)
    {
        // Create a new ClaimsIdentity containing the claims that
        // will be used to create an id_token, a token or a code.
        var identity = new ClaimsIdentity(
            OpenIddictServerDefaults.AuthenticationScheme,
            OpenIdConnectConstants.Claims.Name,
            OpenIdConnectConstants.Claims.Role);

        // Use the client_id as the subject identifier.
        identity.AddClaim(OpenIdConnectConstants.Claims.Subject, application.ClientId,
            OpenIdConnectConstants.Destinations.AccessToken,
            OpenIdConnectConstants.Destinations.IdentityToken);

        identity.AddClaim(OpenIdConnectConstants.Claims.Name, application.DisplayName,
            OpenIdConnectConstants.Destinations.AccessToken,
            OpenIdConnectConstants.Destinations.IdentityToken);

        // Create a new authentication ticket holding the user identity.
        var ticket = new AuthenticationTicket(
            new ClaimsPrincipal(identity),
            new AuthenticationProperties(),
            OpenIddictServerDefaults.AuthenticationScheme);

        ticket.SetScopes(connectRequest.GetScopes());

        ticket.SetResources("resource_server");

        return ticket;
    }

Однако теперь я установилзначение "resource_server" в заявке, есть ли способ получить его?Т.е. я могу получить все Области в моем ClaimsPrinicpal, но я не смог найти какой-либо способ получить свойства AuthenticationProperties билета.

1 Ответ

0 голосов
/ 20 февраля 2019

Однако теперь я установил значение «resource_server» в заявке, есть ли способ получить его?

Конечно, если вы используете формат токена по умолчанию и обработчик проверки OpenIddictВот пример:

public async Task<IActionResult> GetAudiences()
{
    var ticket = (await HttpContext.AuthenticateAsync(OpenIddictValidationDefaults.AuthenticationScheme))?.Ticket;
    if (ticket != null)
    {
        return Json(ticket.GetAudiences());
    }

    return NoContent();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...