2016-10-23 4 views
1

oAuth2のUserInfoエンドポイントでCORSを機能させるのに問題があります。私は、oAuth2 UserInfoリソースを呼び出すことによってクレーム(UserInfo)を取得したいと思います。COROが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リソースで作業していないとは思いますか?

私はWSO2 Identity Serverを使用せず、oAuth2機能を備えたAPIマネージャを使用しています。 私はチェックして、Allows- *ヘッダーがクライアント(OPTIONSのプリフライト中)にブラウザ(javascript)でコールされていないことがわかりました。

このハンドラを追加するとCORSRequestHandlerが機能しないのはなぜですかUserInfAPI .xml?

答えて

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

HI Bhatiya、私に正しいURL(userinfoエンドポイント)を教えていただきありがとうございます。確かに、今、それは動作し、私は私のWebブラウザ(javascript)内からこのエンドポイントでCORS関連のエラーを取得していません。それでも、あなたが提案したエンドポイントを使用していたために、私はそれが奇妙に感じましたが、CORSエラーが発生しました。だから、私はブラウザキャッシングのためにこのエラーが発生したのかどうか疑問に思っています....(?)私はまだそれがなぜ今働いているのか説明できません。しかし、少なくとも、私は前進し、WSO2 APIマネージャーについてもっと多くのことを学んだことがあります;-)。 – user2120188

+0

これはうまくいっていると聞いてうれしいです。私も以前の行動を説明することはできません。 :)ブラウザのキャッシュが時々不思議な仕方で動作するので、ブラウザキャッシュではないとは言えません:) – Bee

+0

APIマネージャのURLも知っていますか?キーマネージャ(APIマネージャの独自のIdentity Server)からログアウトを強制しますか? API Managerのドキュメントでこれを見つけることができませんでした。 – user2120188

関連する問題