2017-12-07 8 views
1

wso2 api managerとのサーバー間通信を実装したいので、自分のアプリケーションを作成して自分のapiに登録できるthirdpartyクライアントが自分のapiを使うことができます。また、これらのクライアントは、特定のリソースセットによって制限される必要があります。組織IDのセットがあり、各特定のクライアントはIDの一部のサブセットのみにアクセスする必要があります。私はクライアントキーがWSO2AM_DBのIDN_OAUTH_CONSUMER_APPSテーブルに格納されていることを理解しました。私はこのDBにアタッチして、clientIdから組織へのマッピングを実装する別のサービスからクライアントIDを読み込み、メディエータの助けを借りてこのサービスを呼び出すことができます。urlで指定された組織IDが許可されているかどうかを確認し、組織が許可されている場合、バックエンドサービスはもう一度チェックすることができます。しかし、これが正しいアプローチであるかどうかはわかりません。おそらく、そのような操作なしで助けることができる何かがwso2にありますか?クライアント資格情報フローのためのwso2 api managerのクライアントキーによる特定のリソースへのアクセスを制限する方法はありますか?

答えて

0

あなたが見つけたとしても、これらのクライアントは、リソース

の特定のセットによって制限されるべき - APIのマネージャーは、エンドポイントに基づいてコールを許可します。リソース(例えば、特定のID)自体は、バックエンドサービスによって承認されるべきである。 API管理者にこのレベルの承認を適用することは合理的であるとは確信していません(私はそれが不可能であると言っているわけではなく、それだけでは十分柔軟ではないかもしれません)。

多分、そのような操作なしで助けることができる何かがwso2にありますか?

私がお勧めするのは、JWT tokenをバックエンドサービスに送信することです。バックエンドサービスは、製品データベースへの厳格なバインディングなしで(ユーザー名、アプリケーションなどに基づいて)承認を行う必要があります。

リンクされたドキュメントも独自のトークンジェネレータを実装する方法について説明しているので、jwtトークン(組織IDなど)に追加のクレームを追加できます。

+0

BEのリソース制限をチェックする必要がある場合でも、何らかの形でクライアントIDをwso2 dbからエクスポートする必要があります。これはハードバインディングです。実際のBEサービスコールの前にリソース制限を行い、JWTでorgIdプロパティを追加する必要があります。これはBEコール数の点でより効率的でBEは許可されたリソースを認識しないためです。私がしたいのは、クライアントと関連付けられたIDを登録する別々のサービスを作成し、その後にエクスポートクライアントをwso2に作成することです。したがって、wso2メディエータはこのサービスに接続し、必要な情報をJWTに取り込むことができます。 – dizon

関連する問題