2016-11-23 1 views
1

나는 을 따라 갔고 authserver을 복제했습니다. 프로젝트는 authserverclient (테스트 용)입니다. 예제가 잘 작동하지만 context-path 속성을 제거하면 (단지 내 앱이 /에서 작동하기를 원합니다) client으로 리디렉션 한 후에 오류가 발생합니다. 예 : client (localhost:9999)에컨텍스트 경로없이 봄 SSO 인증이 실패 함

  1. 이동;
  2. authserver (localhost:8080)로 리디렉션됩니다.
  3. GitHub를 통한 로그인;
  4. authserver과 immediatly 다음 URL로 client로 리디렉션 :

http://localhost:9999/login?code=dqoxz4&state=79qtJ5

허용 목록 라벨 오류 페이지가 응답 :

예기치 않은 오류가 발생했습니다 (유형 = 무단, 상태 = 401).
인증 실패 : 제가 위에서 언급 한 바와 같이, 그것은 context-path/ 경우에만 실패 (또는 모두 제거)

토큰 액세스 권한을 얻을 수 없습니다. 그렇지 않으면 모두 작동합니다. 귀하의 링크에서

답변

2

는 :

컨텍스트 경로는, 클라이언트 와 로컬 호스트에 인증 서버를 모두 실행하는 경우 명시 적이어야한다, 그렇지 않으면 쿠키 경로는 충돌 및 두 응용 프로그램은에 동의 할 수 세션 식별자.

/and AuthServer on/uaa에서 app를 성공적으로 실행했습니다. AuthServer에서 Context-Path를 설정하십시오. 앱과 AuthServer의 쿠키를 살펴보십시오. 쿠키의 경로는 동일하지 않아야합니다.

는 편집 :

다른 도메인을 잘해야한다. 그들은 쿠키를 공유하지 않습니다. localhost와 같은 호스트에서 쿠키가 특정 포트가 아니기 때문에 컨텍스트 경로를 사용해야합니다. 참조 : https://stackoverflow.com/a/16328399/926620

또는/etc/hosts (linux) 또는 c : \ windos \ system32 \ drivers \ etc \ hosts에 도메인을 넣을 수 있습니다. 그냥 같은 줄을 추가 :

127.0.0.1 website authserver 

을 그리고 당신 개발을위한 동일한 시스템에 http://website:9999http://authserver:8080를 사용할 수 있습니다.

쿠키에 다른 이름을 설정할 수도 있습니다.http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 참조 :

server.session.cookie.name=auth 
server.session.cookie.name=web 
+0

내가 다른 도메인에 인증 서버를 호스트하고 싶습니다 ...이 루트 패스에 충분하지 persmission이 있거나 다른 응용 프로그램이이 상황에 맞는 패스를 사용하는 것처럼 뭔가를해야만, 루트 컨텍스트 패스로 돌아갈 생각합니다. 그건 그렇고, 나는 클라이언트에 두 개의 JSESSIONID를 가지고있다. 로컬 IP로 인증 서버에 액세스하려고하면 작동합니까? – Feeco

+0

내 게시물을 편집합니다. –

+0

감사! 'hosts'를 가진 해결책은 굉장합니다! – Feeco

0

당신은 당신의 클라이언트 응용 프로그램에서 RedirecURI을 설정할 수 있습니다

security: oauth2: 
client: 
    client-id: acme 
    client-secret: acmesecret 
    access-token-uri: http://localhost:8080/oauth/token 
    user-authorization-uri: http://localhost:8080/oauth/authorize 
    pre-established-redirect-uri: http://localhost:9999/client 

및 클라이언트를 등록하는 동안 당신은 OAuth2를 서버에 설정할 수 있습니다.

는하지만

관련 문제