KongのOAuth2での認証で公式ドキュメントでは分かりづらいところだったのでまとめてみました。 Client Credentials Grant と Authorization code のフローのアクセストークン取得までの手順をまとめました。
OAuth2のフロー
- Authorization Code Grant
- RailsなどバックエンドのサーバーサイドでOAuthする時
- Implicit Grant
- JavaScriptなどWebブラウザのクライアントサイドでOAuthする時
- Resource Owner Password Credentials Grant
- PCやモバイルアプリなどで、他の方法が使えない環境でOAuthする時
- Client Credentials Grant
- 社内のAPIサーバー等信頼できるクライアントからOAuthする時
プラグインの追加
- OAuth2プラグインの追加
# serviceに設定
$ curl -X POST http://kong:8001/services/periodic-api/plugins \
--data "name=oauth2" \
--data "config.enable_client_credentials=true"
# routeに設定
$ curl -X POST http://kong:8001/routes/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/plugins \
--data "name=oauth2" \
--data "config.enable_client_credentials=true"
- Consumerの作成
$ curl -X POST http://kong:8001/consumers/ --data username=example_consumer
- Applicationの登録
$ curl -X POST http://kong:8001/consumers/example_consumer/oauth2 \
--data name=Example%20Application \
--data redirect_uri=https://example.com/oauth2_callback
Client Credentials Grant
1. Access Tokenの取得
$ curl -k -X POST https://kong:8443/{route}/oauth2/token \
--data grant_type=client_credentials \
--data client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
--data client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Authorization code
1. code 発行
$ curl -k -X POST https://kong:8443/{route}/oauth2/authorize \
--data "provision_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
--data "response_type=code" \
--data "authenticated_userid=1" \
--data "client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
--data "redirect_uri=https://example.com/oauth2_callback"
2. Access Tokenの取得
$ curl -i -k -X POST https://kong:8443/{route}/oauth2/token \
--data "client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
--data "client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
--data "code=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
--data "grant_type=authorization_code"
高橋克幸
新卒3年目で脱新人を目指してます。
フロントに興味を持ち始めた今日このごろ。
趣味は 麻雀 プログラミング 音楽。
運動不足を感じているため、ダンスを始めようかと思っています。