CAS5.3.8 oauth2 环境搭建

环境信息

JDK:1.8
CAS:5.3.8 overlay
tomcat:8.5

cas部署

下载cas overlay 代码 编译部署

添加如下依赖

            <dependency>
                <groupId>org.apereo.cas</groupId>
                <artifactId>cas-server-support-oauth-webflow</artifactId>
                <version>5.3.8</version>
            </dependency>
            <dependency>
                <groupId>org.apereo.cas</groupId>
                <artifactId>cas-server-support-jdbc</artifactId>
                <version>${cas.version}</version>
            </dependency>

第一个依赖支持oauth2 第二个依赖支持数据库验证登录

部署后修改/apache-tomcat-8.5.38/webapps/cas/WEB-INF/classes下面的application.properties
屏蔽 #cas.authn.accept.users=casuser::Mellon
停用静态用户登录
改用数据库密码登录
在Linux /etc/cas/config 下面添加cas.properties 如下:
//此处改正你的地址 test.com是在系统hosts文件里面配置的
cas.server.name: https://test.com:8443
cas.server.prefix: https://test.com:8443/cas

cas.adminPagesSecurity.ip=127.0.0.1

logging.config: file:/etc/cas/config/log4j2.xml
cas.tgc.secure=false //去掉HTTPS验证
#cas.tgc.httpOnly=true
cas.warningCookie.secure=false //去掉HTTPS验证
#cas.warningCookie.httpOnly=true
cas.serviceRegistry.initFromJson=true //这个一定要改应该是告诉系统从json文件加载服务

#cas.authn.jdbc.query[0].credentialCriteria=
#cas.authn.jdbc.query[0].name=
#cas.authn.jdbc.query[0].order=0

cas.authn.jdbc.query[0].sql=SELECT * FROM users WHERE username=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].fieldExpired=
cas.authn.jdbc.query[0].fieldDisabled=
cas.authn.jdbc.query[0].principalAttributeList=sn,cn:commonName,givenName

cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=ww103088
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
cas.authn.jdbc.query[0].url=jdbc:mysql://192.168.2.129:3306/test?useSSL=false&serverTimezone=UTC
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
cas.authn.jdbc.query[0].failFastTimeout=1
#cas.authn.jdbc.query[0].isolationLevelName=ISOLATION_READ_COMMITTED
cas.authn.jdbc.query[0].healthQuery=select 1
#cas.authn.jdbc.query[0].isolateInternalQueries=false
#cas.authn.jdbc.query[0].leakThreshold=10
#cas.authn.jdbc.query[0].propagationBehaviorName=PROPAGATION_REQUIRED
#cas.authn.jdbc.query[0].batchSize=1
#cas.authn.jdbc.query[0].defaultCatalog=
#cas.authn.jdbc.query[0].defaultSchema=
#cas.authn.jdbc.query[0].ddlAuto=create-drop
#cas.authn.jdbc.query[0].physicalNamingStrategyClassName=org.apereo.cas.jpa.CasHibernatePhysicalNamingStrategy

cas.authn.jdbc.query[0].autocommit=false
cas.authn.jdbc.query[0].idleTimeout=1000
cas.authn.jdbc.query[0].properties.propertyName=propertyValue
cas.authn.jdbc.query[0].pool.suspension=false
cas.authn.jdbc.query[0].pool.minSize=6
cas.authn.jdbc.query[0].pool.maxSize=18
cas.authn.jdbc.query[0].pool.maxWait=9000
cas.authn.jdbc.query[0].pool.timeoutMillis=1000

as.authn.oauth.refreshToken.timeToKillInSeconds=25999

cas.authn.oauth.code.timeToKillInSeconds=300
cas.authn.oauth.code.numberOfUses=1

cas.authn.oauth.accessToken.releaseProtocolAttributes=true
cas.authn.oauth.accessToken.timeToKillInSeconds=7200
cas.authn.oauth.accessToken.maxTimeToLiveInSeconds=2880

cas.authn.oauth.grants.resourceOwner.requireServiceHeader=true

cas.authn.oauth.userProfileViewType=NESTED

修改 apache-tomcat-8.5.38/webapps/cas/WEB-INF/classes/services 下面的 HTTPSandIMAPS-10000001.json 文件,添加http支持 也就是不用HTTPS访问 在serviceid里面添加http:

{
“@class” : “org.apereo.cas.services.RegexRegisteredService”,
“serviceId” : “^(https|imaps|http)?/.*”,
“name” : “HTTPS and IMAPS”,
“id” : 10000001,
“description” : “This service definition authorizes all application urls that support HTTPS and IMAPS protocols.”,
“evaluationOrder” : 10000
}

在apache-tomcat-8.5.38/webapps/cas/WEB-INF/classes/services
下面添加 OAuthService-1000001.json文件
{
“@class” : “org.apereo.cas.support.oauth.services.OAuthRegisteredService”,
“clientId”: “100001”,
“clientSecret”: “100001abcdeft”,
“serviceId” : “^(https|http|imaps)?/.*”,
“name” : “OAuthService”,
“id” : 1000001
}

采用authorization_code方式授权,首先获取code
https://test.com:8443/cas/oauth2.0/authorize?response_type=code&client_id=100001&redirect_uri=http://www.baidu.com

这一个步骤如果报空指针异常,看一下代码是不是registerserver是不是空的,如果是这样,那就是你上面配置的json service 没有生效,如果生效
你能在tomcat启动日志里面看到加载service的信息

还要确认下你的clientid是不是跟配置的一致,否则也会报错。

成功后会跳转到百度,在url后面会带code参数

然后在用code 去获取token
https://test.com:8443/cas/oauth2.0/accessToken?grant_type=authorization_code&client_id=100001&client_secret=100001abcdeft&code=OC-1-JclMChjB1blOaFVVMmEZ6Gkrt76rbUiv&redirect_uri=http://www.baidu.com

这个URL应该是Post获取的,可以用浏览器直接访问,如果浏览器返回401让你登录,那一定是你的client_id 或者client_secret有问题,我就是client_secret弄错了 浪费了我一下午的时间,这个参数就是在上面的json文件里面配置的.

获取到token以后就可以获取user_profile了。
有问题请留言。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值