我一直在调查我有一个现有身份验证基础结构的CF部署方案,我需要配置UAA以将登录委派给现有的SSO权限。作为第一步,我决定使用login.rb示例服务器,只是为了让事情顺利进行。
我使用示例login.rb和在localhost上运行的示例应用程序以及在另一台主机上运行的UAA实例来设置我的环境。从应用程序重定向到localhost:3000的登录页面正在工作,查看我的日志我可以看到,当login.rb示例将帖子发送到UAA时,(传递)身份验证成功,此外收到的帖子响应授权也给200 OK ....我可以看到返回了所需的提示字符串的JSON。但是,erb确认对话框出现问题。我在login.rb的第124行得到了一个例外
NoMethodError - undefined method `[]' for nil:NilClass:
/home/fieldj1/Documents/workspace-sts-3.1.0.RELEASE/uaa/samples/login/login.rb:124:in `block in <class:LoginApplication>'
/var/lib/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1212:in `call'
/var/lib/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1212:in `block in compile!'
/var/lib/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in `[]'
/var/lib/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in `block (3 levels) in route!'
/var/lib/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:801:in `route_eval'
...
问题似乎是解析来自UAA的JSON OAUTH响应的代码已过时。我通过更改第124行来修复它:
erb :confirm, :locals => {:client_id => confirmation_info["authorizationRequest" ["clientId"], \
:scopes => confirmation_info["authorizationRequest"]["scope"]}
到此:
erb :confirm, :locals => {:client_id => confirmation_info["auth_request"]["authorizationParameters"]["client_id"], \
:scopes => confirmation_info["auth_request"]["authorizationParameters"]["scope"]}
有没有人见过这个?我很确定我运行的代码应该是自我一致的,因为我做了整个UAA的git克隆。不确定我的环境是否有某种不一致,或者我是否发现了真正的问题。
谢谢, 约翰
答案 0 :(得分:0)
这是一个真正的问题,因为红宝石样本不是最新的,没有人可以更新它,因为我们不在任何地方使用它。如果你可以发送一个很棒的拉取请求。
答案 1 :(得分:0)
我们目前正在更新所有文档和示例应用示例,您使用的登录ruby示例应用目前已过时。欢迎您提出拉动请求。
与此同时,您可以查看新文档及其正在进行的工作:http://cloudfoundry.github.com/。
谢谢, - Hitesh