質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.62%

  • Java

    13529questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • MacOS(OSX)

    1850questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • Spring

    668questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • IntelliJ IDEA

    130questions

    IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

  • OAuth 2.0

    84questions

    OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Spring Securty oauth2 oauth/tokenにcurlした結果得るjasonのフォーマットを変えたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 305

タイトルについて
帰ってくるJasonのフォーマットを変えたいです。
現在はJavaのほうで実装しています。

public class CustomTokenEnhancer extends JwtAccessTokenConverter{
    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
        request request = new request();

        Map<String, Object> additionalInfo = new LinkedHashMap<String, Object>();
        Map<String, Object> additionalInfo2 = new LinkedHashMap<String, Object>();
        Map<String, Object> additionalInfo3 = new LinkedHashMap<String, Object>();

        additionalInfo.put("A",0);
        additionalInfo.put("B",additionalInfo2);
        additionalInfo2.put("AA","aa");
        additionalInfo2.put("BB","bb");
        additionalInfo2.put("CC","cc");
        additionalInfo3.put("AAA",aaa);
        additionalInfo3.put("BBB",bbb);
        additionalInfo3.put("CCC",ccc);
        ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo3);
        System.out.println(((DefaultOAuth2AccessToken) accessToken).getAdditionalInformation());
        String token = encode(accessToken,authentication);
        additionalInfo2.put("token","JWTアクセストークンが入って欲しい");
        ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
        return accessToken;
    }
}


curlした結果が以下になります

{"access_token":"アクセストークン","token_type":"bearer","expires_in":11111,"scope":"仮","A":"a","B":{"AA":"aa","BB":"bb","token":"additionalInfo3だけのアクセストークンがほしい"},"jti":"9152f485-5f6f-4dfb-90b7-7d6c1707ea82"}

理想は
{"A":"a","B":{"AA":"aa","BB":"bb","token":"additionalInfo3だけのアクセストークンがほしい"}
この部分だけが結果として返ってくることです。
tokenの中身はただjwtになればいいだけではなく、アクセストークンとして機能して欲しいです。
可能でしょうか?

発行するjwtに情報を追加できる場所はわかるのですが、それをどこが発行しているのかはわかりません。デバッグした感じ、oauth2のライブラリが用意してくれているクラスを色々通ってることはわかるのですが、keyとvalueを編集できない形で用意しているくらいにしかわかりません。
仕事でやれと言われてとりあえず方法を探しているのですが、ほんとにできるのかは誰もわからない状態です。

10/23 jasonのフォーマットを作っているらしいところをコピペしていじってみたが、変化がなかった。別のクラスで最終的なフォーマットを吐き出しているようだけど、そこがわからないため、未だ調査中

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2017/10/20 12:16

    JSON 返却側をそういう風に実装してください

    キャンセル

  • tanaka_Maysun

    2017/10/20 14:16

    oauth2のライブラリ(DefaultOAuth2AccessTokenクラス)がフォーマットを勝手に作ってくれてるくさいんですが、finalだったりprivateだったりで直接いじれなさそうだったので、その返却側はどのクラスでどういじれるのだろうってのが知りたいです。一ヶ月はつまずいてます。

    キャンセル

  • asahina1979

    2017/10/20 15:48

    あくまでも「Default」なので自作してくださいってことでしょう

    キャンセル

  • tanaka_Maysun

    2017/10/20 16:15

    あーそういう意図があるかもなんですね。その線で頑張ってみます。

    キャンセル

回答 1

check解決した方法

0

oauth2を使わないことになりました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13529questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • MacOS(OSX)

    1850questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • Spring

    668questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • IntelliJ IDEA

    130questions

    IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

  • OAuth 2.0

    84questions

    OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。