【问题标题】:How can I authenticate role/permission info wso2 identity server to my service provider?如何向我的服务提供商验证角色/权限信息 wso2 身份服务器?
【发布时间】:2018-11-08 20:48:27
【问题描述】:

我正在使用 Spring security SAML2.0 SSO 和 wso2IS 5.4.0。我已将角色声明添加到服务提供商内部的 wso2is 中。现在我可以在 saml 断言中获取用户角色。

在这里,我想验证他们角色的用户基础。我在 securityContext.xml 中映射了具有某些角色的应用程序(服务提供者)url

<security:http entry-point-ref="samlEntryPoint" use-expressions="false" auto-config="true" access-denied-page="/saml/web/auth/denied">
<security:intercept-url pattern="/saml/web/home" access="ROLE_MEMBER"/>
<security:intercept-url pattern="/saml/web/getUserDetails" access="ROLE_ADMIN"/>
    <security:intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY"/>
    <security:custom-filter before="FIRST" ref="metadataGeneratorFilter"/>
    <security:custom-filter after="BASIC_AUTH_FILTER" ref="samlFilter"/>
</security:http>

【问题讨论】:

  • 你能再解释一下你的要求吗?您是否希望将角色包含在 saml 断言中,或者您已经这样做了并且需要其他内容?
  • 嗨@Maduranga是的,我希望角色也应该包含在saml断言中,然后在我希望用户应该根据作为saml断言一部分的角色访问我的服务提供商(应用程序)之后

标签: spring-security saml-2.0 wso2is


【解决方案1】:

在服务提供者访问期间,如果您想根据用户的角色向身份服务器验证用户身份,那么您可以使用 XACML 策略“authn_role_based_policy”。如果您使用此 XACML 策略,则仅允许具有特定角色的用户进入身份验证流程,而其他用户将被拒绝。你可以参考writing XACML policy documentation

【讨论】:

  • 嗨@Nilasini 我已经完成了 XACML 策略并添加了我的服务提供商(我已注册为 App3)和角色,但它没有按我的预期工作
  • 嗨 @Nilasini 我配置了 XACML 策略并根据角色进行身份验证,但我想要的是用户应该得到身份验证并且请求将重定向到我的服务提供商,并且我已经映射了某种具有某些用户角色的功能,理想情况下,我希望用户角色应该是断言的一部分,并且我可以根据用户角色进行身份验证
【解决方案2】:

由于您想在 saml 断言中获取用户的角色,您需要将角色声明 (http://wso2.org/claims/role) 添加到服务提供者配置中的请求声明列表中,如 here 所述。

如果您需要控制来自 Identity Server 端的访问,请按照上面@Nilasini 提供的说明进行操作。更多信息请访问here。基本上您需要做的是在服务提供商配置中启用“启用授权”并创建相关的 XACML 策略。

我不是 Spring SAML 专家。因此,如果您想要的话,我不会评论如何使用用户角色控制 Spring SAML 的访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    相关资源
    最近更新 更多