我对ASP.net不太熟悉。我已按照本link中的教程进行操作,以使用Keycloak保护asp.net mvc应用程序。 Keycloak在本地主机上运行。当我单击“关于”时,它将正确重定向到Keycloak登录页面,没有任何问题。当我正确输入用户名和密码,并且想要重定向以显示“关于”页面的内容时,会出现以下错误:
IDX10214:受众群体验证失败。受众群体:“帐户”。不匹配:validationParameters.ValidAudience:“空”或validationParameters.ValidAudiences:“空,应用程序”。
异常详细信息: Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException: IDX10214:观众验证失败。受众群体:“帐户”。没有 匹配:validationParameters.ValidAudience:“空”或 validationParameters.ValidAudiences:“ null,应用”。
当我使用“ DisableAudienceValidation = true”禁用受众验证标志时,将引发签名验证失败错误:
DX10501:签名验证失败。无法匹配“孩子”: '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“:”刷新“,” 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-帐户链接”,“查看配置文件”]}},“范围”:“ openid” 电子邮件个人资料”}”。
异常详细信息: Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501:签名验证失败。无法匹配“孩子”: '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“:”刷新“,” 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-帐户链接”,“查看配置文件”]}},“范围”:“ 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();
}
}