OpenAM OAuth2
OpenAM是很强大的,OAuth2的配置也相对简单,分3步走
- 配置OAuth2 Application(=OAuth2 connect client / ≈OAuth2 agent)
- 配置OAuth2 Service Provider(Configure OAuth2 authorization server)
- 验证OAuth2的code/access_token/tokeninfo是否正确
配置OAuth2 Application
1.进入顶层Top Level Realm,找到Applications
->OAuth2
2.New一个Agent
,这里看到的Name
,就是client_id
3.这里的Client password
要记住,也就是后面要用的client_sercret
4.把要授权跳转的网站,配置进去Redirection_URIs
,这里我们用http://java.bejson.com/generator/
5.Scope可以设置几个,例如mail
/employeenumber
等
*。至于Scope怎么获取,可以参考以下方法,从Subjects
里面打开找到你的用户,然后修改,然后使用Chrome的F12查看元素,EntityEdit.XXX
就是想要的Scope
了,这个值后面tokeninfo
的时候会获取到。
配置OAuth2 Service Provider
1.DashBoard
有个Common Tasks
,找到一个Configure OAuth Provider
的菜单,配置Configure OAuth2
2.基本没什么可以选,默认即可。
3.正常保存后,可以再Services
里面找到一个OAuth2 Provider
4.里面有些配置可以定制,不过作为demo一般默认就够了
验证OAuth2的code/access_token/tokeninfo是否正确
1.首先是code,开始构建url,关键是几个字段
- client_id=tomcatadmin,前面agent/client里面的Name
- response_type=code,这里是code,当然你可以粗暴一点设置为token直接获取access_token
- scope=employeenumber,相当于你要tokeninfo可以获取的信息
- redirect_uri=http://java.bejson.com/generator 必须是配置再重定向uris里面的地址
2.跳转并获取Code
3.从地址提取code
为de7f03c5-a72c-4d74-acae-b7671fbbeb19
4.使用Postman构造POST
请求,获取ACCESS_TOKEN
- url :
http://localhost:8099/openampro/oauth2/realms/root/access_token
- 参数:
client_id:tomcatadmin
client_secret:tomcat123
code:de7f03c5-a72c-4d74-acae-b7671fbbeb19
grant_type:authorization_code
redirect_uri:http://java.bejson.com/generator
5.使用Postman构造GET
请求,获取TOKEN INFO
http://localhost:8099/openampro/oauth2/realms/root/tokeninfo?access_token=
5afab977-64b0-4480-83cb-40b140aae1ed
Summary
到此,一个简单的OpenAM-OAuth2的构建(redirectUrl->code->accessToken->tokenInfo
)已经完成,但是这只是一个开始,还有更复杂的配置,更复杂的授权机制,还有LDAP/Subjects同步,Scope设置等等内容需要探索。