spring-mvcアプリケーションで「loginwithgoogle」機能を実装するためにopenid4javaライブラリを使用しています。
ローカルのTomcatサーバーでは正常に動作しますが、リモートサーバーでは突然動作を停止しました。それ以前も問題なく動作していました。
catalina.outにログインした後、グーグルがリターンURLにリダイレクトした後、応答の検証が失敗することがわかりました
VerificationResult verification = openIdService.getConsumerManager().verify(
receivingURL.toString(),
response, discovered);
Identifier verified = verification.getVerifiedId(); //Null
リモートサーバーでは、verifiedの値はnullです。ローカルサーバーでは、そのURI
応答を処理している間、ConsumerManagerは認証要求を行うために使用されるのと同じインスタンスである必要があることを認識しています。
残りのコードは次のように実装されます
OpenIdServiceが自動配線されているOpenIdControllerがあります。
OpenIdServiceImplはOpenIdServiceを実装し、consumerManagerインスタンスを返すgetConsumerManagerメソッドを備えています。
OpenIdServiceImplの構成では、ConsumerManagerのインスタンスが作成されます。
送信用のフォームを作成し、応答を処理するアクションは、OpenIdControllerに書き込まれ、getConsumerManagerメソッドを使用してconsumerManagerインスタンスにアクセスします。
編集:
フォームを送信する前にディスカバリー情報をログに記録してみましたが、ここにコールバックすると出力されます
Debugging OpenId: Discovered (before) OpenID2
OP-endpoint:https://www.google.com/accounts/o8/ud
ClaimedID:null
Delegate:null
Debugging OpenId: Discovered (after) OpenID2
OP-endpoint:https://www.google.com/accounts/o8/ud
ClaimedID:null
Delegate:nul
私はここで何か間違ったことをしていますか?しかし、それはローカルサーバーで動作します!
または、リモートサーバーのTomcat構成と関係がありますか?
どんな助けでも大歓迎です。必要に応じてコードを投稿できます。
ありがとう。