2012-08-13 4 views
0

내 응용 프로그램에서 OpenAM을 사용하고 있습니다. 나는 그런 URL 사용하여 내 응용 프로그램에 액세스 : 나는 올바른 인증 후OpenAM 로그인 재 지정 후 사용자 정의 URL 매개 변수가 손실됩니다.

...openam/UI/Login?goto=http%3A%2F%2Fmy.company.com%3A8080%2Fappfolder 

: 처음 액세스에

http://my.company.com/appfolder/appservlet?lang=EN&user=test 

을 OpenAM 에이전트는 URL을 잡는다이 리디렉션 URL을 사용하여 인증 페이지로 브라우저를 리디렉션 마지막으로 다음 URL로 리디렉션되었습니다.

http://my.company.com/appfolder 

goto param에서 참조 된 URL이기 때문에 이것은 논리입니다. 하지만 원래의 것과 다릅니다. 서블릿과 사용자 정의 매개 변수 (lang 및 user)가 누락되었습니다.

내 에이전트가 리디렉션 후에 서블릿과 매개 변수를 유지하도록 구성하는 방법에 대한 아이디어가 있습니까?

답변

0

자습서 "OpenAM을 사용하여 웹 사이트에 인증 추가"의 this step을 살펴보십시오. - "는 액세스 정책 만들기"섹션에서

> "와일드 카드 매칭은"당신의 대답입니다 : 정책의 URL에서

와일드 카드 *가 일치하지 않습니다 '?'. 따라서 에 GET 매개 변수를 제출하려면 http://webserver.example.com/ *? *에 대한 두 번째 정책이 필요합니다.

+0

답변 해 주셔서 감사합니다. 불행하게도 문제를 해결하지 못합니다. http : // my.company.com/*' http : //my.company.com/*? *', 'http : // my.company.com/appfolder/*'및 http : //my.company.com/appfolder/*? *', 하지만 에이전트는 항상 서블릿이나 매개 변수없이 goto 매개 변수를 작성합니다. 이상한 점은 인증 후 애플리케이션의 전체 URL을 입력하고 '... openam/UI/Logout'을 사용하여 로그 아웃하면 다음 openam 리디렉션에는 서블릿과 매개 변수가 포함됩니다. – morbac

0

답장을 보내 주셔서 감사합니다. 이전에 언급 한 바와 같이 새 정책을 추가해도 내 문제는 해결되지 않습니다. 실제로, 정책이 적용되기 전에 작용하는 J2EE 에이전트에 의해 goto 매개 변수가 생성되기 때문에 정책이이 문제를 어떻게 해결할 수 있는지 이해할 수 없습니다. (아는 한 ... 아마도 틀 렸습니다).

어쨌든 J2EE 에이전트를 다시 컴파일하여 문제를 해결할 수있었습니다. forgerock에서 v3.0.3을 기반으로 새로운 agent.jar을 빌드했습니다. 그럼 난 여기에 해당 소스를 구축, 새로운하여 AmFilterRequestContext.class을 대체 : http://www.docjar.com/html/api/com/sun/identity/agents/filter/AmFilterRequestContext.java.html

을이 새 에이전트로, 내 goto 이제 정확하고 재 잘 작동 (그리고 나는 어떤 정책을 정의 할 필요가 없습니다).

이상한 점은 왜 지금 작동하는지 이해할 수 없다는 것입니다. 위의 자바 소스와 원래 클래스의 컴파일되지 않은 버전 사이에 어떤 차이점을 찾을 수 없었습니다! 방금 변수 값과 함수 결과를 얻으려면 System.out.println을 추가하고 jar를 빌드하십시오. 내 보스를 다시 돌린 후 goto이 맞습니다. 나는 이것이 시간이되었을 때 왜 지금 마침내 작동하는지 이해하려고 노력할 것입니다.