2

私はASP.NET Web ApiwithOAuth2 authorizationを構築していて、次のようなアプリケーションに取り組んでいます。

  • お客様
  • 組織
  • ユーザー

顧客には1つ以上の組織があり、ユーザーは1つ以上の顧客の代理を務めることができます。

このロジックをスコープとアクセストークンの一部にしたいと思います。このようにしてアクセスを制限できますが、APIを使用してアプリケーションから(複雑な)ロジックを削除することもできます。(彼らが小さなスコープを選んだとき)

スコープ

  • 組織
  • お客様
  • 全て

例えば

アプリケーションが組織 スコープでアクセストークンを要求すると、ユーザーは付与ページに2つのドロップダウンボックスが表示されます。1つは顧客を選択し、もう1つはこの顧客が所有する組織から1つを選択します。

このように、スコープ組織のアクセストークンは、この単一の組織からのデータのみに制限する必要があります。

これを使用してこれを実現するための最良の方法は何でしょうDotNetOpenAuthか?

スコープとしてorganisationIdとcustomerIdをアクセストークンに追加する必要がありますか?そして、そうする場合、「顧客」スコープをどのように処理しますか?組織IDなしでCustomerIdを追加する必要がありますか?(顧客は最大約150の組織を持つことができます)

理想的には、これをクレームに変換して、ユーザーのアクションを簡単に承認できるようにします。

スコープがこれを修正する正しい方法である場合、または車輪の再発明やDotNetOpenAuthフレームワークを壊さずに、これをより適切に修正する方法についてのアイデアがあれば、フィードバックをお願いします。

PSAuthorizationServer私はとの 両方を構築しResourceServerます。

4

1 に答える 1

1

私に関する限り、組織 ID を追加するべきではありません。トークンは、具体的にどの組織ではなく、ユーザーが組織にアクセスできることの証明と見なす必要があります。サーバーは、トークンに保存されているユーザー名を使用して、ユーザーが表示を許可されている組織のみを表示できます。つまり、サーバーが実行する必要があるチェックは 2 つあります。

  1. サーバーは、提供されたトークンが組織スコープに対して承認されているかどうかを確認します。
  2. サーバーは、(トークンから取得された) ユーザーがどの特定の組織に対して承認されているかを確認します。

こうすることで、OAuth スコープを単純明快に保ちながら、特定の組織のみへのアクセスを制限することができます。

于 2013-03-28T11:13:44.570 に答える