0

管理者が通常の管理タスクのために、ユーザー名とパスワードの組み合わせでログインできるようにするサイトを作成しています。しかし、彼が「危険な」タスクを実行する必要がある場合は、2FA を使用して (1 回だけ) ログインさせ、現在のセッションのアクセス許可を昇格させたいと考えています。

誰かがこれを行う方法を知っていますか、または少なくとも正しい方向に向けてください。

どうも

4

1 に答える 1

1

ログインするときは、必要なスコープをリクエストする必要があるため、クライアントが両方のスコープを利用できることを確認してください。ただし、必要なスコープのみをリクエストしてください。

例: 'admin' スコープと 'dangerous' スコープを作成し、両方のスコープをクライアントで利用できるようにします。最初のログインでは「admin」を要求するだけですが、危険なページにアクセスすると、別のログイン要求を送信しますが、「admin」と「dangerous」の両方のスコープを要求します。

また、特定の管理者だけが危険なタスクを実行できる場合は、それらの管理者にのみ「危険な」クレームを与えるようにしてください。そのクレームを手動で UserClaims テーブルに入れるか、データベース アクセスとして MembershipReboot を使用している場合は、useraccount オブジェクトで 'AddClaim()' メソッドを使用します。

更新: 申し訳ありませんが、この回答は 2 要素認証とは関係がなく、ユーザーのトークンに 2 番目のスコープを追加する方法に関連しています。

更新: たとえば、「リソース所有者」フローを使用している場合、元のログイン リクエストは「管理者」スコープのみで次のようになります。

POST /ids/connect/token HTTP/1.1
Host: https://mywebsite.com
  Content-Type: application/x-www-form-urlencoded;charset=UTF-8

 grant_type=password&username=billybob&password=mypassword&scope=admin&client_id=MyClientId&client_secret=MyClientSecret

次に、「危険な」スコープを取得したい場合は、同じ方法で別のログインを行いますが、「危険な」スコープをリクエストに追加します (スペースで区切って)。返されるアクセス トークンには、両方のスコープ (管理者と危険な) が含まれます。 ):

POST /ids/connect/token HTTP/1.1
Host: https://mywebsite.com
  Content-Type: application/x-www-form-urlencoded;charset=UTF-8

grant_type=password&username=billybob&password=mypassword&scope=admin dangerous&client_id=MyClientId&client_secret=MyClientSecret
于 2015-08-05T14:00:50.193 に答える