Гибридная идентификация пользователя в MVC Core - PullRequest
0 голосов
/ 16 марта 2020

Я выполнил следующие шаги для создания гибридного решения для входа в систему Гибридная аутентификация в. net ядро ​​с Open Id Connect и локальной базой данных

При запуске приложения и последующем нажатии Azure Кнопка входа в Active Directory, я получаю следующую ошибку:

An unhandled exception occurred while processing the request.
SecurityTokenInvalidIssuerException: IDX10205: Issuer validation failed. Issuer: '[PII is hidden]'. Did not match: validationParameters.ValidIssuer: '[PII is hidden]' or validationParameters.ValidIssuers: '[PII is hidden]'.
Microsoft.IdentityModel.Tokens.Validators.ValidateIssuer(string issuer, SecurityToken securityToken, TokenValidationParameters validationParameters)

Exception: An error was encountered while handling the remote login.
Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler<TOptions>.HandleRequestAsync()

appsettings. json

 "ConnectionStrings": {
        "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Hybrid2-365BF50C-5C76-40EB-820E-59075FF471D7;Trusted_Connection=True;MultipleActiveResultSets=true"
    },
    "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "Domain": "[Enter the domain of your tenant, e.g. contoso.onmicrosoft.com]",
        "TenantId": "common",
        "ClientId": "9407cd54-e564-4e15-b9e0-aabd750037c0",
        "CallbackPath": "/signin-oidc",
        "CookieSchemeName": "Identity.External"
    },
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "AllowedHosts": "*"

1 Ответ

0 голосов
/ 16 марта 2020

Если ваше приложение является мультитенантным, поскольку вы запрашиваете конечную точку /common, вам необходимо отключить проверку издателя:

services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
        .AddAzureAD(options => Configuration.Bind("AzureAd", options));

services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{

    options.TokenValidationParameters.ValidateIssuer = false;

});

Конечная точка /common не является арендатором и не является эмитент, это просто мультиплексор. При использовании /common логика c в вашем приложении для проверки токенов должна определять, какие значения эмитента действительны, а какие не основаны на части идентификатора владельца значения эмитента. См. Документ здесь для более подробной информации.

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