2017-08-10 17 views
0

現在、マイクロサービスのAPIゲートウェイを分析しており、Kongが候補の1つです。我々はKongが認証のためにいくつかのプラグインをサポートしているが、すべてがKongデータベース自体に格納されているユーザに基づいていることを発見しました。この責任をカスタム認証HTTPサービスに委任し、これらのユーザーをAPIゲートウェイデータベースに追加する必要はありません。Kong APIゲートウェイのカスタム認証サービス

答えて

0

は香港のOpenID接続プラグインgetkong.org/plugins/openid-connect-rpをチェックアウト - それは外部のアイデンティティと認証システムに接続します。

2

これは、代わりにOpenIDの接続プラグインを使用しての、周りのいくつかのコードでこれを行うことが可能です。事実上、Admin(8001)ポート経由でKongと会話し、外部から与えられたUser Idを持つAPIの使用を認可するAuthorization Serverを実装する必要があります。

要するに

(認証コードの付与はこちら)以下のように、それは行く:代わりにトークンの直接香港に尋ねるの

  • は、(特定のAPIのためのトークンを取得するための要求と認証サーバーを打ちますいずれかのハードコード化されたまたはパラメータ、)何が必要に応じて、通話にアクセスする必要があるアプリケーションのクライアントIDが含まれます(
  • 認証サーバーは、今何のIdPで認証する必要があり、実際には/authorizeエンドポイント)を実装します認証サーバーの内部に認証されたユーザーがいるようにする必要があります。
  • Kong Admin API経由でAPIのプロビジョニングコードを取得し、プロビジョニングキーを含むKong Gateway(ポート8443)のエンドポイント/oauth2/authorizeをクリックします。このアプリケーションを作成するには、Admin APIを介してアプリケーションクライアントIDのクライアントシークレットも検索する必要があることに注意してください。
  • クライアントID、クライアントシークレット、認証されたユーザーID(カスタムIDPから)、オプティカルスコープPOST/oauth2/authorize;これらの値は現在、認証コードを使用して主張することができるアプリケーションをアクセストークンを使用してAPIにバックエンドの通話に追加されます
  • 香港では必要になります(あなたが302リダイレクトを経由して戻ってアプリケーションに渡すバック認証コードを、与えます香港のポート8443、URL /oauth2/tokenから)アクセストークンを取得するには、認証コードで、このためのOAuth2仕様)
  • アプリケーションは、クライアントとシークレットを使用してを読んで(とトークンリフレッシュする必要があります。

それは終わりであるよりも、より複雑に聞こえます。私はKongとnode.jsをベースにしたwicked.haufe.ioでこれを行い、オープンソースの開発者ポータルをKongに追加しました。多くのコードがどのIdPのと統合するために何ができるかを示し、次の二つのプロジェクトであります。

現在見て調査しています邪悪な人にデフォルトの認証サーバーを追加することもできますが、今は自分自身をロール/フォークする必要があります。

おそらくこれが役に立ちます。マーティン

+0

お返事ありがとうございます。私は確かに提案についてより深く見ていきます。 –

+0

認証(ユーザ+パスワード)、承認(ユーザが特定のリソースへのアクセス権を持っているか)、および登録(このマイクロサービスに関連付けられたユーザdbにユーザを追加する)を扱うマイクロサービスがすでにある場合はどうでしょうか? kongとユーザーサービスを統合する方法はありますか?このレベルのユーザー対話は、アプリケーション固有のものになるようです。 – user1790300

+0

これは、あなたができることであり、おそらくOAuth2で解決しなければならないように聞こえます.OAuth2は、通常は承認をスコープに抽象化するステップです。 *あなたの*サービスのためにどのように詳細に行われているかは、あなたがここに述べたことだけでは分かりません。あなたのAPIは、事前に収集された情報からKongの認証と認証を取得するのが理想的です。それはしばしば可能ですが、必ずしもそうではありません。 – donmartin

関連する問題