Как добавить претензию на предъявителя по адресу httpinterceptor of adal-angular - PullRequest
0 голосов
/ 12 июня 2018

В приложении angularjs я использую библиотеки adal и adal-angular для аутентификации пользователя в Azure AD.В бэкэнде я использую промежуточное программное обеспечение OWIN в моем webAPI для добавления пользовательских утверждений с помощью:

app.UseWindowsAzureActiveDirectoryBearerAuthentication(new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
    Audience = ConfigurationManager.AppSettings["ida:Audience"],
    Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
    Provider = new OAuthBearerAuthenticationProvider()
    {
        OnValidateIdentity = async context =>
        {
            if(!context.IsValidated)
                return;

            var userManager = context.OwinContext.Get<UserManager>();
            string email = context.Ticket.Identity.GetClaimValue(System.Security.Claims.ClaimTypes.Email);
            User user = userManager.GetByEmail(email);

            context.Ticket.Identity.AddClaim(new Claim(ClaimTypes.UserId, user.Id.ToString(CultureInfo.InvariantCulture));
        }
    }
});

Это работает для текущего запроса, но как добавить утверждение в канале-носителе, отправленном httpinterceptor из adal-angular для следующегозапросы?

1 Ответ

0 голосов
/ 12 июня 2018

Чтобы ответить на ваш прямой вопрос: вы не можете изменить токен доступа, точка.Он имеет цифровую подпись, которая больше не будет действительной, если вы измените что-либо в токене.Это мера безопасности, которая предотвращает вмешательство.Промежуточное программное обеспечение OWIN загружает открытые ключи пар ключей подписи из Azure AD при запуске и использует их для проверки токенов.

Теперь, если вы сохранили свои внутренние идентификаторы в качестве атрибутов расширения, на самом деле можно было бы сообщить AzureAD, чтобы включить это в токены.Хотя эта функция находится в режиме предварительного просмотра и не рекомендуется для производственного использования: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims#configuring-custom-claims-via-directory-extensions. Здесь вы должны установить внутренний идентификатор как расширение для объекта User и включить его для маркеров доступа к вашему API.

Прагматичным решением вашей проблемы может быть кэш в памяти.Как часто меняются электронные письма?

...