如果未注册X.509用户,请阻止CAS身份验证

时间:2019-03-01 23:18:21

标签: cas

我在X.509 authentication中设置了Apereo CAS,它工作正常。我还启用了cas.authn.attributeRepository.jdbc设置,以便在用户成功进行身份验证时从数据库表中检索其他属性。

但是,如果我的表中没有匹配的行,则该用户仍将通过身份验证。他只是缺少表列中的各种属性。在这种情况下,我希望身份验证失败。怎么能做到?

2 个答案:

答案 0 :(得分:1)

查看Enforce Attribute是否是您想要的:https://apereo.github.io/cas/5.3.x/installation/Configuring-Service-Access-Strategy.html#enforce-attributes

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "testId",
  "name" : "testId",
  "id" : 1,
  "accessStrategy" : {
    "@class" : "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy",
    "enabled" : true,
    "ssoEnabled" : true,
    "requiredAttributes" : {
      "@class" : "java.util.HashMap",
      "YOUR_JDBC_RETURN_ATTRIBUTE" : [ "java.util.HashSet", [ "*" ] ]
    }
  }
}

这里,*有效,因为Enforce Attribute支持正则表达式,请参见:

https://github.com/apereo/cas/blob/v5.3.9/core/cas-server-core-services-api/src/main/java/org/apereo/cas/services/DefaultRegisteredServiceAccessStrategy.java#L298

答案 1 :(得分:1)

  

但是如果我的表中没有匹配的行...在这种情况下,我希望身份验证失败。怎么能做到?

执行此操作的正确方法是查看此设置是否可以帮助您:

cas.authn.x509.principal.principalResolutionFailureFatal=true

设置注意事项:

  

为true时,将返回一个错误,指示主体解析失败,并且根据身份验证要求找不到主体。否则,只需将条件记录为错误,而不会引发灾难性错误。