Azure AD OpenID接続フレームワークを使用して、WebベースのJavaアプリケーションの認証サービスを開発しています。私は参照していますadal4j-1.2.0.jar
認証は動作ごとに行われています。私はJWTの請求権を取得しており、それを検証することができます。Azure AD Adal4jリフレッシュトークンが署名されていないトークンが受信されましたJWT
しかし、60分のセッションタイムアウトが発生し、リフレッシュトークンを使用して新しいトークンクレームを取得しようとしている場合、新しいトークンはSigned JWTではありません。彼らはプレーンJWTです。
キャッシュしている初期リフレッシュトークンを使用してトークンを取得するために、以下の呼び出しを使用しています。トークンの検証のため
acquireTokenByRrefreshToken(refreshtoken, credential,null,null)
は、私は誰も私が私が新しい署名付きトークンを取得するためのリフレッシュトークンを引き換えることができる方法を理解するのを助けることができる
IDtokenValidator validator = new IDTokenValidator(issuer,clientID, JWSAlgo,URL)
validator.validate(idToken, exoectedNoounce); //this line throws badjwtexception signed ID token expected
以下のようなコードを使用しています。または、トークンを償還した後、新しいトークンは常にプレーンJWTです。
セッションが期限切れになった後に新しいトークンを取得するには、これを追加するだけです。リソース(URL)は、返信URLとしてAzure ADに登録されているものと同じである必要があります。しかし、セッションが終了すると、ユーザーは別のURLにいる可能性があります。新しいリクエストが送信された場合、返信URLが一致しないというエラーページが表示されます。 –
この場合、コード許可フローまたはクライアント信用証明フローを使用することができます。まず、ユーザーを検証してから、このコードをクライアントシークレットとともに送信して、トークン+リフレッシュトークンを取得します。ライブラリにコード許可フローを呼び出すメソッドがあります。 –