wso2是5.0 SP1区分大小写吗?

时间:2015-09-24 06:53:14

标签: wso2 saml-2.0 wso2is

我们正在使用WSO2是5.0 SP1。我们已配置ReadOnly LDAP并使用身份服务器的授权功能。我们在WSO2 IS上定义的XACML策略从分配给用户的角色派生其权利。我们的观察是WSO2 IS与用户名实际匹配,即区分大小写。如果我们在WSO2用户列表中提供的用户名相同,则返回正确的权利。在WSO2是5.0 SP1中是否有相同的修复方法?任何解决方法也会有所帮助。

<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="AdministratorPolicy" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides" Version="1.0">
<Target></Target>
<Rule Effect="Permit" RuleId="Rule1">
  <Condition>
     <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
        <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
           <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
              <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Test</AttributeValue>
          </Apply>
           <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
        </Apply>
        <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
           <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Internal/Administrator</AttributeValue>
           <AttributeDesignator AttributeId="http://wso2.org/claims/role" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
        </Apply>
     </Apply>
  </Condition>
</Rule>
Rule Effect="Deny" RuleId="Rule2"></Rule>
 </Policy>        

提前致谢, Cijoy

1 个答案:

答案 0 :(得分:0)

我认为这种行为是因为您编写xacml策略的方式而发生的。

您是否使用urn:oasis:names:tc:xacml:1.0:function:string-equal来匹配xaml政策中的用户名?

如果是,请尝试urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case而不是上述内容。它应该解决这个问题。

编辑:使用更新的问题XACML策略,问题是XACML引擎在没有从主题正确的情况下获取用户名时不检索角色。

这意味着,如果用户名不正确,默认PIP不会返回角色。

想到这个角度,回答你原来的问题

wso2是否区分大小写5.0 SP1?

对于usernames \ role-names区分大小写,如果Identity Server从其插入的基础用户存储继承。如果将IS连接到Active Directory,通常用户名\ rolenames不区分大小写。如果在Oracle用户存储上部署IS,通常会以区分大小写的方式处理用户名\ rolenames。

<强>解决方案

但更具体地说,对于您的场景,如果您想要检索(内部)角色列表,而不管用户名是什么情况。有关此行为的报告issue,Identity Server 5.0.0确实包含这些修复。所以你可以试试,

  1. 打开<IS_HOME>/repository/conf/user-mgt.xml文件。
  2. GetRoleListOfInternalUserSQL标记下添加<UserManager>/<Realm>/<Configuration>属性,其值如下,

    <UserManager>
       <Realm>
          <Configuration>
            ...
            <Property name="GetRoleListOfInternalUserSQL">
                SELECT UM_ROLE_NAME FROM UM_HYBRID_USER_ROLE, UM_HYBRID_ROLE WHERE UPPER(UM_USER_NAME)=UPPER ( ? ) AND UM_HYBRID_USER_ROLE.UM_ROLE_ID=UM_HYBRID_ROLE.UM_ID AND UM_HYBRID_USER_ROLE.UM_TENANT_ID=? AND UM_HYBRID_ROLE.UM_TENANT_ID=? AND UM_HYBRID_USER_ROLE.UM_DOMAIN_ID=(SELECT UM_DOMAIN_ID FROM UM_DOMAIN WHERE UM_TENANT_ID=? AND UM_DOMAIN_NAME=?)
            </Property>
          </Configuration>
         ...
       </Realm>
    <UserManager>
    
  3. 重启服务器

  4. 现在,您的政策应根据用户名

    的任何情况按预期进行评估