Kong と OAuth を使用して、Web アプリとその他の API を構築する必要があります。
今私が持っています:
- コングのサーバー。
- サーバーには、ID、ユーザー名、パスワードなどのユーザー情報が保存されます。ユーザーデータベースと名付けました。
する必要がある:
- Web アプリやその他のアプリは、OAuth2.0 で API を使用する予定です。
- API は Kong のみが提供します。
Kong のドキュメントによると、私は Resource Owner Password Credential を設計しました。これは次のようなものです。
(これらの API は accessToken を取得するためのものであり、認証方法はありません)
- ユーザー側からユーザー名とパスワードを Kong に送信
- Kong はそれを User-Database にルーティングします。
- User-Database はユーザー名とパスワードを確認し、リクエストを Kong に送信します。リクエストには、ユーザー名、パスワード、provision_key、autherticated_userid が含まれます。(*)
- Kong は access_token を User-Database に応答し、autherticated_userid、access_token、およびスコープも記憶します。Kong は、アクセス トークンの有効期限が切れる前にそれらを記憶します。
- User-Database が Kong からの応答を受信した後、ステップ 1 と 2 にも応答し、最終的に User-End は将来の使用のためにアクセス トークンを取得します。
(アクセストークンを取得)
- User-End は、認証が必要な API にリクエストを送信します。
ステップ3でわからないことがありました。
コングに関する文書によると:
$ curl https://your.api.com/oauth2/token \
--header "Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW" \
--data "client_id=XXX" \
--data "client_secret=XXX" \
--data "scope=XXX" \
--data "provision_key=XXX" \
--data "authenticated_userid=XXX" \
--data "username=XXX" \
--data "password=XXX"
The provision_key is the key the plugin has generated when it has been added to the API, while authenticated_userid is the ID of the end user whose username and password belong to.
すべてのユーザー情報を自己管理ユーザー データベースと Kong の両方に保存する必要がありますか?
または、見逃したものや最適化できるものはありますか?