0

我一直在调查一个 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 克隆。不确定我的环境是否不一致,或者我是否发现了真正的问题。

谢谢,约翰

4

2 回答 2

0

这是一个真正的问题,因为 ruby​​ 样本不是最新的,而且没有人愿意更新它,因为我们没有在任何地方使用它。如果您可以发送一个拉取请求,那就太棒了。

于 2013-03-06T19:50:05.537 回答
0

我们目前正在努力更新我们所有的文档和示例应用程序示例,您使用的登录 ruby​​ 示例应用程序当前已过时。欢迎您提出拉取请求。

同时,您可以查看新文档,它的工作正在进行中:http ://cloudfoundry.github.com/ 。

谢谢, - Hitesh

于 2013-03-06T19:50:53.103 回答