기존의 인증 인프라가있는 CF 배포 시나리오를 조사한 결과 로그인을 기존 SSO 기관에 위임하도록 UAA를 구성해야합니다. 첫 번째 단계로, login.rb 샘플 서버를 사용하기로 결정했습니다.UAA login.rb 샘플 실행 중 오류가 발생했습니다.
예제 login.rb 및 localhost에서 실행되는 샘플 응용 프로그램과 다른 호스트에서 실행되는 UAA 인스턴스로 내 환경을 설정했습니다. 응용 프로그램에서 localhost : 3000의 로그인 페이지로 리디렉션이 작동하고 내 로그를보고 login.rb 샘플이 UAA에 게시를 수행 할 때 (통과) 인증이 성공한 것을 볼 수 있습니다. 응답은 또한 승인을 위해 게시물을받은 200 OK .... 나는 필요한 프롬프트 문자열 JSON가 반환되고 볼 수 있습니다. 그러나 erb 확인 대화 상자에서 문제가 발생합니다. 나는
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 응답을 구문 분석하는 코드가 유효 기간이 있다는 것 같다 login.rb 라인 (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"]}
다른 사람이 본 사람을 나는이에서 라인 (124)을 변경하여 고정? 나는 전체 UAA의 git clone을 수행 한 이후로 실행중인 코드가 자체 일관성이 있어야한다는 것을 확신합니다. 내 환경이 어딘지 모르게 일치하지 않거나 실제 문제가 발견되면 확실하지 않습니다.
감사합니다, 존
OK, 나는 곧 풀 요청을 할 수 있습니다. 나는 샘플과 함께 변화가 일어나는 것을 보았다. 그러나이 초기 샘플은 매우 가볍고 내 개발 VM에서 쉽게 실행/실험 할 수 있다는 이점이있었습니다. 고마워, John –