Я не очень знаком с 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();
}
}