IDX10214: Ошибка проверки аудитории при защите asp.net mvc с помощью Keycloak - PullRequest
0 голосов
/ 31 мая 2019

Я не очень знаком с ASP.net.Я следовал руководству по этой ссылке , чтобы обезопасить приложение asp.net mvc с помощью Keycloak.Keycloak работает на localhost.Когда я нажимаю «О программе», он без проблем перенаправляет на страницу входа в Keycloak.Следующая ошибка появляется, когда я правильно ввожу свое имя пользователя и пароль, и он хочет перенаправить, чтобы показать содержимое страницы «О программе»:

IDX10214: Ошибка проверки аудитории.Аудитория: «аккаунт».Не соответствует: validationParameters.ValidAudience: 'null' или validationParameters.ValidAudiences: 'null, app'.

Сведения об исключении: Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException: IDX10214: Ошибка проверки аудитории.Аудитория: «аккаунт».Не соответствует: validationParameters.ValidAudience: 'null' или validationParameters.ValidAudiences: 'null, app'.

Когда я отключаю флаг проверки аудитории с помощью "DisableAudienceValidation = true", ошибка проверки подписи будет ошибкойповышено:

DX10501: Ошибка проверки подписи.Невозможно сопоставить 'kid': '87783715-a04c-42c6-b400-827febc23d12', токен: '{"alg": "HS256", "typ": "JWT", "kid": "87783715-a04c-42c6-b400-827febc23d12 "} {." JTI ":" 665f8127-53ca-4e88-ad23-c9c18e5a1ac1" , "ехр": 1559327065, "НСБ": 0, "IAT": 1559325265, "ИСС": "http://localhost:8080/auth/realms/demo","aud":" http://localhost:8080/auth/realms/demo","sub":"dc6ea95d-c1b9-42c4-8998-49bf7f001c3b","typ":"Refresh","azp":"app","auth_time":0,"session_state":"8406120f-9609-457b-8603-3df4e300ee8b","realm_access":{"roles":["offline_access","admin","uma_authorization","user"]},"resource_access":{"account":{"roles":["manage-account","manage-account-links","view-profile"]}},"scope":"openid профиль электронной почты"} '.

Сведения об исключении: Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501: Ошибка проверки подписи. Невозможно сопоставить'kid': '87783715-a04c-42c6-b400-827febc23d12', токен: '{"alg": "HS256", "typ": "JWT", "kid": "87783715-a04c-42c6-b400-827febc23d12"}. {" jti ":" 665f8127-53ca-4e88-ad23-c9c18e5a1ac1 "," exp ": 1559327065," nbf ": 0," iat ": 1559325265," iss ":" http://localhost:8080/auth/realms/demo","aud":" http://localhost:8080/auth/realms/demo","sub":"dc6ea95d-c1b9-42c4-8998-49bf7f001c3b","typ":"Refresh","azp":"app","auth_time":0,"session_state":"8406120f-9609-457b-8603-3df4e300ee8b","realm_access":{"roles":["offline_access","admin","uma_authorization","user"]},"resource_access":{"account":{"roles":["manage-account","manage-account-links","view-profile"]}},"scope":"openid профиль электронной почты"} '.

Я протестировал это приложение на сервере Keycloak моей компании, работающем по протоколу https, и все было в порядке, нокогда я тестирую его с сервером Keycloak на локальном хосте, это вызывает эти ошибки.Затем я сравниваю настройки между сервером Keycloak моего локального хоста и Keycloak компании.Все настройки были одинаковыми.

Это мой Startup.cs:

public void Configuration(IAppBuilder app)
{
    const string persistentAuthType = "AspnetApp_cookie_auth";

    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = persistentAuthType
    });
    app.SetDefaultSignInAsAuthenticationType(persistentAuthType); 

    app.UseKeycloakAuthentication(new KeycloakAuthenticationOptions
    {
        ClientId = "app",
        ClientSecret = "my-client-secret-key",
        VirtualDirectory = "", 

        Realm = "demo", // Don't change this unless told to do so
        KeycloakUrl = "http://localhost:8080/auth/",

        SignInAsAuthenticationType = persistentAuthType, 
        AuthenticationType = "AspnetApp_keycloak_auth", 
        //DisableAudienceValidation = true,
    });
}

А это мой HomeController.cs:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [Authorize]
    public ActionResult About()
    {
        ViewBag.Message = "Your application description page.";

        return View();
    }

    public ActionResult Contact()
    {
        ViewBag.Message = "Your contact page.";

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