2016-10-23 1 views
1

oAuth2의 UserInfo 끝점에서 CORS를 작동시키는 데 문제가 있습니다. oAuth2 UserInfo 리소스를 호출하여 클레임 (UserInfo)을 가져 오려고합니다.CORSO가 WSO2 API 관리자의 oAuth2 UserInfo 끝점에서 작동하지 않습니다.

내가 알고있는 것처럼 "WSO2 API Manager CORS"... oAuth2 리소스에 대한 CORS를 활성화하려면 위의 stackoverflow 링크에서 설명한대로 CORSRequest 핸들러를 추가하여 Synapse 구성에서 수행해야합니다. 위의 링크에서 설명한대로 Token en Revoke 자원 (_TokenAPI_.xml en _RevokeAPI_xml)에 대해이 CORSRequest 처리기를 추가했습니다. 그리고 효과가있었습니다! 그 후에도 내 응용 프로그램에서 CORS 문제가 발견되었으므로 CORSRequestHandler를 _UserInfoAPI_.xml (wso2server.bat 서버에서 다시 시작 함)에 추가하여 동일한 절차를 수행했지만 여전히 동일한 CORS 오류가 발생합니다.

XMLHttpRequest cannot load https://localhost:9443/oauth2/userinfo?schema=openid. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. 

CORS가 내 토큰 리소스에서 작동하고 있으며 내 userinfo 리소스에서 작동하지 않는다는 것을 이해하지 못합니까?

Btw, WSO2 Identity Server를 사용하지 않고 oAuth2 기능이있는 API 관리자 만 사용합니다. 확인한 결과 Allows- * 헤더가 클라이언트 (OPTIONS 프리 플라이트 중) 브라우저 (자바 스크립트)로 다시 전송되지 않음을 알 수 있습니다.

이 처리기를 UserInfAPI .xml에 추가하면 CORSRequestHandler가 작동하지 않는 이유는 무엇입니까?

답변

2

OPTION 통화에 올바른 URL 인 https://localhost:8243/userinfo을 사용하셨습니까?

방금 ​​시도한 결과물입니다.

[email protected]:/$ curl -v -k -X OPTIONS https://localhost:8243/userinfo 
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 8243 (#0) 
* found 173 certificates in /etc/ssl/certs/ca-certificates.crt 
* found 697 certificates in /etc/ssl/certs 
* ALPN, offering http/1.1 
* SSL connection using TLS1.2/ECDHE_RSA_AES_128_GCM_SHA256 
* server certificate verification SKIPPED 
* server certificate status verification SKIPPED 
* common name: localhost (matched) 
* server certificate expiration date OK 
* server certificate activation date OK 
* certificate public key: RSA 
* certificate version: #3 
* subject: C=US,ST=CA,L=Mountain View,O=WSO2,CN=localhost 
* start date: Fri, 19 Feb 2010 07:02:26 GMT 
* expire date: Tue, 13 Feb 2035 07:02:26 GMT 
* issuer: C=US,ST=CA,L=Mountain View,O=WSO2,CN=localhost 
* compression: NULL 
* ALPN, server did not agree to a protocol 
> OPTIONS /userinfo HTTP/1.1 
> Host: localhost:8243 
> User-Agent: curl/7.47.0 
> Accept: */* 
> 
< HTTP/1.1 200 OK 
< Accept: */* 
< Access-Control-Allow-Origin: * 
< Access-Control-Allow-Methods: GET 
< Host: localhost:8243 
< Access-Control-Allow-Headers: authorization,Access-Control-Allow-Origin,Content-Type,SOAPAction 
< Date: Sun, 23 Oct 2016 14:43:27 GMT 
< Transfer-Encoding: chunked 
< 

동일한 URL을 사용하는 경우 완전한 말풍선 요청 및 응답을 게시하십시오.

+0

안녕하세요 Bhatiya, 저에게 올바른 URL (userinfo endpoint)을 알려 주셔서 감사합니다. 사실, 이제 작동하고 내 웹 브라우저 (자바 스크립트) 내에서이 끝점에서 CORS 관련 오류가 발생하지 않습니다. 그러나 당신이 제안한 엔드 포인트를 사용하고 있었기 때문에 여전히 이상하다는 것을 알았지 만 CORS 오류가 발생했습니다. 그래서 브라우저 캐싱 때문에이 오류가 발생했는지 궁금합니다 .... (?) 나는 지금 왜 작동하는지 설명 할 수 없습니다. 그러나 적어도 앞으로 나아갈 수 있고 WSO2 API 관리자에 대해 많은 것을 배울 수 있습니다 .-). – user2120188

+0

다행히 지금 듣고 있습니다. 나는 또한 이전의 행동을 설명 할 수 없다. 때로는 브라우저 캐시가 신비한 방식으로 작동하기 때문에 브라우저 캐시가 아니라고 말할 수 없습니다. :) – Bee

+0

API 관리자의 URL을 알고 있으면 keymanager (API 관리자의 자체 Identity Server)에서 로그 아웃하도록 할 수 있습니까? API 관리자의 문서에서 찾을 수 없습니다. – user2120188

관련 문제