zoukankan      html  css  js  c++  java
  • Apache Shiro 集成-Cas

    http://blog.csdn.net/peterwanghao/article/details/8825008

    Shiro集成CAS是在1.2版本里新增的功能。

    Shiro-cas模块将应用作为CAS客户端与CAS SSO服务器一起保护web应用。

    CAS协议的一个基本理解:

    1. 如果你想访问一个被CAS客户端保护的应用,而你还没有进行认证。你讲被重定向到CAS服务端的登录页面。在应用中你需要配置CAS的登录url地址。

    http://application.examples.com/protected/index.jsp → HTTP 302

    → https://server.cas.com/login?service=http://application.examples.com/shiro-cas

    2. 当你填上登录名和密码在CAS服务端进行认证后,你就被重定向到一个带有服务端票据的应用URL。服务端票据是一次性使用的令牌,可在CAS服务端标识用户的唯一性(或用户属性)。

    https://server.cas.com/login?service=http://application.examples.com/shiro-cas → HTTP 302

    → http://application.examples.com/shiro-cas?ticket=ST-4545454542121-cas

    3. 应用去CAS服务端询问票据的有效性,CAS服务端响应经过认证的用户唯一标识。CAS客户端将页面转发到受保护的页面。

    http://application.examples.com/shiro-cas?ticket=ST-4545454542121-cas → HTTP 302

    → http://application.examples.com/protected/index.jsp

    如何配置shiro与CAS服务器工作?

    在你的应用中添加shiro-cas Maven依赖

    <dependency>

        <groupId>org.apache.shiro</groupId>

        <artifactId>shiro-cas</artifactId>

        <version>version</version>

    </dependency>

    在你的应用中添加服务端url,这个url被用来接收CAS服务端票据。

    在Shiro配置中定义CasFilter:

    [main]

    casFilter = org.apache.shiro.cas.CasFilter

    casFilter.failureUrl = /error.jsp

    定义过滤器对应的url:

    [urls]

    /shiro-cas = casFilter

    这样一来,当用户经过CAS服务端的有效票据认证后被重定向到应用的服务地址(/shiro-cas),这个过滤器接收服务端票据并创建一个可以被CasRealm使用的CasToken。

    CasRealm使用被CasFilter创建的CasToken来验证用户的合法性。在你的shiro配置中添加CasRealm:

    [main]

    casRealm = org.apache.shiro.cas.CasRealm

    casRealm.defaultRoles = ROLE_USER

    #casRealm.defaultPermissions

    #casRealm.roleAttributeNames

    #casRealm.permissionAttributeNames

    #casRealm.validationProtocol = SAML

    casRealm.casServerUrlPrefix = https://server.cas.com/

    casRealm.casService = http://application.examples.com/shiro-cas

    casServerUrlPrefix是CAS服务端地址。

    casService是应用服务地址,用来接收CAS服务端票据。

    validationProcol值为SAML or CAS,默认是CAS。它依赖于CAS服务器的版本,SAML协议只能使用在CAS server version >= 3.1。

    defaultRoles是认证通过后默认角色。

    defaultPermissions是认证通过后默认权限。

    roleAttributeNames是认证通过的用户的角色属性名称,用逗号分隔。

    permissionAttributeNames是认证通过的用户的权限属性名称,用逗号分隔。

    CAS服务端可以支持 ‘remember me’ 功能,这个信息通过SAML验证或CAS定制验证发布。你需要在Shiro配置中定义CasSubjectFactory:

    [main]

    casSubjectFactory = org.apache.shiro.cas.CasSubjectFactory

    securityManager.subjectFactory = $casSubjectFactory

    最后,为你的应用增加安全控制。定义需要保护的url地址和需要进行认证的CAS服务端地址:

    [main]

    roles.loginUrl = https://server.cas.com/login?service=http://application.examples.com/shiro-cas

    [urls]

    /protected/** = roles[ROLE_USER]

    /** = anon

    一个完整的配置例子:

    [main]

    casFilter = org.apache.shiro.cas.CasFilter

    casFilter.failureUrl = /error.jsp

    casRealm = org.apache.shiro.cas.CasRealm

    casRealm.defaultRoles = ROLE_USER

    casRealm.casServerUrlPrefix = https://server.cas.com/

    casRealm.casService = http://application.examples.com/shiro-cas

    casSubjectFactory = org.apache.shiro.cas.CasSubjectFactory

    securityManager.subjectFactory = $casSubjectFactory

    roles.loginUrl = https://server.cas.com/login?service=http://application.examples.com/shiro-cas

    [urls]

    /shiro-cas = casFilter

    /protected/** = roles[ROLE_USER]

    /** = anon

  • 相关阅读:
    利用开源数据集进行钓鱼邮件检测——数据量还是很少啊,黑+白1万多条
    通过GAN绕过基于机器学习的IDS检测系统,IDSGAN(也是对IDS ML检测算法进行绕过,数据集使用NSL-KDD,DoS、U2R、R2L三种攻击)——也有最新防御的方法
    Mac 微信截图快捷键
    Mac M1 Brew配置nginx开机自启动,解决nginx自启动不成功问题
    Mac 停掉自带的Apache服务
    Mac如何卸载软件
    Mac brew 管理服务
    Mac vscode 跳转函数
    Mac vscode修改文件名
    Mac 使用phpmyadmin
  • 原文地址:https://www.cnblogs.com/a757956132/p/4660991.html
Copyright © 2011-2022 走看看