cas(七) Oauth2.0服务器

  前面的微信集成,是Cas作为Oauth2.0的客户端调用微信,现在让Cas作为Oauth2.0的服务端。

  • POM文件依赖
    <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-support-oauth</artifactId>
            <version>${cas.version}</version>
        </dependency>
  • 修改web.xml增加对/oauth/转发
  <servlet-mapping>
    <servlet-name>cas</servlet-name>
    <url-pattern>/oauth/*</url-pattern>
  </servlet-mapping>
  • 在deployerConfigContext.xml配置Oauth服务器,增加id=1的RegisteredServiceImpl
<bean
        id="serviceRegistryDao"
        class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
            <property name="registeredServices">
                <list>
                    <bean class="org.jasig.cas.services.RegexRegisteredService">
                        <property name="id" value="0" />
                        <property name="name" value="HTTP and IMAP" />
                        <property name="description" value="Allows HTTP(S) and IMAP(S) protocols" />
                        <property name="serviceId" value="^(https?|imaps?)://.*" />
                        <property name="evaluationOrder" value="10000001" />
                    </bean>
                    <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                        <property name="id" value="1" />
                        <property name="name" value="key" />
                        <property name="description" value="secret" />
                        <property name="serviceId" value="http://localhost:9090/" />
                        <property name="theme" value="demo" />
                    </bean>
  • 在cas-servlet.xml增加oauth的映射和Oauth2.0协议处理类
<prop key="/oauth/*">oauth20WrapperController</prop>
<bean id="oauth20WrapperController"
        class="org.jasig.cas.support.oauth.web.OAuth20WrapperController"
        p:loginUrl="${server.prefix}/login" p:servicesManager-ref="servicesManager"
        p:ticketRegistry-ref="ticketRegistry" p:timeout="7200" />
  • 添加对中文的Oauth的国际化(请参考英文自行翻译,这里只做测试)
screen.oauth.confirm.header=header
screen.oauth.confirm.message=message
screen.oauth.confirm.allow=allow
  • 最后测试

参考资料:http://www.cnblogs.com/AloneSword/p/4168198.html

  1. 访问 http://localhost:8080/oauth/authorize?client_id=key&redirect_uri=http://localhost:9090/&response_type=code
  2. 接着输入用户名密码
  3. 然后页面上点击“allow”授权
  4. 最后浏览器跳转访问9090端口带上了ST,如下
  5. 访问访问链接,获取accessToken
  6. 最后访问链接获取用户信息

 

http://localhost:9090/?code=ST-1-6xMrCvNlSwfbffPLbLGy-cas01.example.org
http://localhost:8080/oauth/accessToken?client_id=key&client_secret=secret&grant_type=authorization_code&redirect_uri=http://localhost:9090/&code=ST-1-6xMrCvNlSwfbffPLbLGy-cas01.example.org
http://localhost:8080/oauth/profile?access_token=TGT-1-ZX5fe6Sf9rhHwHlCUqMzmTYku6eZ0cGBdudxTHPUdDmy9lXI3U-cas01.example.org
posted @ 2017-08-07 16:41  風之殤  阅读(534)  评论(0)    收藏  举报