2015-07-10 53 views
0

我有一个cas服务器,它可以正确地认证并发送一些属性。现在我想添加一个服务来检查主体属性中的用户角色,并且只有当登录用户具有特定角色(如管理员角色!)时才允许访问服务。允许在cas中的特定角色

我读了'requiredHandlers',并认为它可以帮助,但我无法使它工作!

对于服务,我有这样的事情:

<bean class="org.jasig.cas.services.RegexRegisteredService"> 
     <property name="id" value="1"/> 
     <property name="name" value="Admin panel service"/> 
     <property name="serviceId" value="http://localhost:8080/admin"/> 
     <property name="evaluationOrder" value="0"/> 
     <property name="ignoreAttributes" value="true"/> 
     <property name="requiredHandlers" value="supporterAuthenticationHandler"> <!-- this is what i found so far --> 
     </property> 
    </bean> 

其中supporterAuthenticationHandlerauthenticationManager

<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager"> 
    <constructor-arg> 
     <map> 
      <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver"/> 
      <entry key-ref="primaryAuthenticationHandler"><null /></entry> 
      <entry key-ref="supporterAuthenticationHandler"><null /></entry> 
     </map> 
    </constructor-arg> 

    <property name="authenticationPolicy"> 
     <bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy"/> 
    </property> 
</bean> 

而且supporterAuthenticationHandler定义是的AuthenticationHandler(什么也没有实现又一个简单的FPGA实现

问题是我不能让cas来检查supporterAuthenticationHandler所以我可以走得更远(可能会陷入另一个需要具有属性的新主体的洞)。

我完全错了吗?我应该在我的管理员应用程序中检查用户角色吗?是否有可能通过不同的服务检查角色?

回答

0

这就意味着CAS是一种认证服务而不是授权服务。 CAS仅确保用户是他们所说的他们不是他们在应用程序(服务)中可以做的事情。

请参阅此答案

https://security.stackexchange.com/questions/7623/can-central-authentication-service-cas-do-authorization

+0

我我想知道我用CAS作为授权。好。这是一个授权,但我想为整个服务做,而不仅仅是它的一部分。我已经在某处读过它,但无法再找到它。 CAS必须能够以某种方式授权访问特殊服务。 (现在我检查服务端的服务授权) – alizelzele

+0

根据你的问题,它是授权。身份验证只能确认用户不在安全系统中扮演什么角色。你将不得不建立一个完整的授权系统来做你想做的事情。当已经有系统进行授权和认证时,为什么要经历这些麻烦。 –

相关问题