나는 기본 톰캣 인증을 사용 AWS에 배포 된 Java 웹 응용 프로그램을 가지고있다. 이 모든 것은 컨테이너에 의해 처리됩니다. 나는 응용 프로그램이 어떤 인증도 처리하지 않지만 컨테이너는 Google 또는 GSuite 계정으로 로그인하는 Google OAuth2와 동일한 작업을 수행하려고 노력했습니다. 이것이 가능한가?Google OAuth2에서 Tomcat 8.0 컨테이너 수준 인증을 구현하는 방법은 무엇입니까?</p> <pre><code><login-config> <auth-method>BASIC</auth-method> </login-config> </code></pre> <p>응용 프로그램 자체가 어떤 인증을 수행하지 않습니다 -
OpenID Connect Authenticator for Tomcat 유망 해 보였지만 로그인 할 때 계속 로그인 오류 페이지로 리디렉션되었습니다.
나는에이를 구현하는 동안 다음 단계에 따라 내localhost
-
- I 다운로드 및
/tomcat-8/lib/
자신의 jar file을 두었다. - 클라이언트 ID를
Authorized JavaScript origins
으로 작성하여https://localhost:8443
및Authorized redirect URIs
을https://localhost:8443/myapp/j_security_check
으로 작성했습니다. localhost
https
을port 8443
에 설정하려면hostBaseURI
이 필요합니다. 내 응용 프로그램의web.xml
, I 설정에서-
<security-constraint> <web-resource-collection> <web-resource-name>All</web-resource-name> <url-pattern>*.html</url-pattern> <url-pattern>/myapp/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>*</role-name> </auth-constraint> </security-constraint>
<login-config> <auth-method>FORM</auth-method> <realm-name>authTestWeb</realm-name> <form-login-config> <form-login-page>/WEB-INF/public/login.html</form-login-page> <form-error-page>/WEB-INF/public/login-error.html</form-error-page> </form-login-config> </login-config>
context.xml
에서, 내가 설정<Valve className="org.bsworks.catalina.authenticator.oidc.OpenIDConnectAuthenticator" discoveryDocumentURL="https://accounts.google.com/.well-known/openid-configuration" clientId="xxxx" clientSecret="xxxx"/>
로Valve
속성을.- Google Sign-In script을
login.html
에 두었습니다.
https://localhost:8443/myapp
에 액세스하면 Google 사용자 이름과 비밀번호를 묻는 메시지가 나타납니다. 그래도 로그인하면 Check Cookie
메시지가 잠시 표시되고 login-error.html
으로 리디렉션됩니다.
내가 뭘 잘못하고 있니?
또한 Philip Green II's module for Google OAuth 2을 사용하려고 생각했지만 Tomcat 8.5 이상에서만 사용할 수있는 것으로 보입니다. 아쉽게도 AWS Elastic Beanstalk은 Tomcat 8.0 만 최신 버전으로 사용합니다.
Google OAuth2를 사용하여 Tomcat 8.0 컨테이너 수준 인증을 얻으려면 어떻게해야합니까?