Spring Coud【Spring Security OAuth 2】ライセンス認証


読み解く
最近は仕事のためにSpring Cloud Oauth 2 SSOのdemoプロジェクトをしました.Spring Security OAuth 2に基づいています.
本文
アムウェイSpring Boot Admin
認証
対外暴露二つのポート
8080ゲートウェイインターフェース(リソースサーバとして)
8090のOauth 2インターフェース(ライセンスサーバとして)
二つの部分に分ける
リソースサーバ
  • Registry 8761登録サービス
  • appi-gateway 8080ゲートウェイサービス
  • account-service 9000アカウントサービス
  • admin-server 9000 adminサービス
  • 認証サーバ
  • oauth 2-server 8090認証サービス
  • 起動順序
    リソースサーバ
  • Registry 8761登録サービス
  • account-service 9000アカウントサービス
  • admin-server 9000 adminサービス
  • appi-gateway 8080ゲートウェイサービス
  • 認証サーバ
  • oauth 2-server 8090認証サービス
  • postManテスト
    token共有はJdbc Token Storeに基づいています.ここでRedis Token Storeに変更できます.Spring Security TokenStoreを参照して3+1の詳細を実現できます.
    初期化テーブル構造
    Drop table  if exists oauth_access_token;
    create table oauth_access_token (
      create_time timestamp default now(),
      token_id VARCHAR(255),
      token BLOB,
      authentication_id VARCHAR(255),
      user_name VARCHAR(255),
      client_id VARCHAR(255),
      authentication BLOB,
      refresh_token VARCHAR(255)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    Drop table  if exists oauth_refresh_token;
    create table oauth_refresh_token (
      create_time timestamp default now(),
      token_id VARCHAR(255),
      token BLOB,
      authentication BLOB
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    ステップ1登録許可token
    今回はパスワードモード4でのモードの詳細をテストしやすいようにOAuth 2.0を参照して理解してください.
    ここのAuthorzationはアプリケーションのclient_です.IDの値とsecretの値の暗号化
     POST http://localhost:8090/oauth/token HTTP/1.1
     Authorization: Basic U2FtcGxlQ2xpZW50SWQ6c2VjcmV0
     Content-Type: application/x-www-form-urlencoded
    
     grant_type=password&username=admin&password=admin
         
    応答情報
    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Cache-Control: no-store
    Pragma: no-cache
         
    {
        "access_token": "63ac3e98-3a82-4837-b399-d4dbb7e1be38",
        "token_type": "bearer",
        "refresh_token": "4e699657-9fd9-4b83-881c-7e9942402353",
        "expires_in": 43011,
        "scope": "user_info"
    }
    ステップ2は、リソース携帯認証情報を要求する.
    GET http://localhost:8080/api/account HTTP/1.1
    Authorization: bearer 63ac3e98-3a82-4837-b399-d4dbb7e1be38
    応答情報は以下の通りです
    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Cache-Control: no-store
    Pragma: no-cache
    
    hello account service
    Step 3ログアウト
    access_token値は前ステップで取得したaccess_token値Authorzation値はアプリケーションのclient_です.idとsecretの暗号化
    DELETE http://localhost:8090/oauth/token?access_token=63ac3e98-3a82-4837-b399-d4dbb7e1be38 HTTP/1.1
    Authorization: Basic U2FtcGxlQ2xpZW50SWQ6c2VjcmV0
    応答
    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Cache-Control: no-store
    Pragma: no-cache
    
        
    プロジェクトのソースコードはギthubに委託されました.