我已经实现了自己的oAuth2提供程序服务器(使用Grails spring security oAuth2插件),现在正尝试将其连接到OpenAM。
当我尝试登录时,它会正确地重定向到我自己的登录表单,并且在成功身份验证时使用以下URL重定向回OpenAM:
http://sso.my-domain.com/openam/XUI/#login/&realm=%myRealm&code=dPPg1g&state=rzhjjjl1wpmndz7zfh4gqm1r5k9xi2l
然而,OpenAM说“无法登录”。 auth代码在URL中,因此它应该能够请求访问令牌,所以我去做了一些调试,发现它甚至没有尝试检索令牌;相关的日志记录如下:
来自localhost_access_log的:
[15/Dec/2015:11:29:17 +0100] "GET /MyOAuthProvider/oauth/authorize?client_id=openAm&scope=read&redirect_uri=http%3A%2F%2Fsso.my-domain.com%3A80%2Fopenam%2Foauth2c%2FOAuthProxy.jsp&response_type=code&state=rzhjjjl1wpmndz7zfh4gqm1r5k9xi2l HTTP/1.1" 200 901
[15/Dec/2015:11:29:18 +0100] "POST /MyOAuthProvider/oauth/authorize?client_id=openAm&scope=read&redirect_uri=http%3A%2F%2Fsso.my-domain.com%3A80%2Fopenam%2Foauth2c%2FOAuthProxy.jsp&response_type=code&state=rzhjjjl1wpmndz7zfh4gqm1r5k9xi2l HTTP/1.1" 302 -
如您所见,没有调用/ MyOAuthProvider / oauth / token,它是令牌访问点。
来自/usr/share/tomcat7/openam/openam/debug/debug.log: http://pastebin.com/qivhR9JF(因为它太长了所以放在PasteBin上)
在本地测试时,我能够获得授权代码,然后使用Postman的调用就可以正常使用令牌,所以这不应该是问题。
我在这里遗漏了什么吗?任何帮助表示赞赏
答案 0 :(得分:0)
在浏览OpenAM调试日志后,我发现它尝试检索令牌,但得到“拒绝连接”。似乎问题在于我的服务器上的代理和路由。
由于openAM和我的oAuth提供程序在同一个Tomcat上运行,因此将令牌(和用户数据)网址从sso.my-domain.com
更改为localhost:8080
修复了问题