2017-01-19 7 views
1

私はこのarticleに基づいてJWT認証を実装しようとしています。 特定のユーザー(管理者)が他のユーザー(クライアント)を偽装するようにする必要もあります。JWTを使用した偽装

私はここで二つの可能性を参照してください。管理者トークンを使用して管理要求を行い、要求のそれぞれに偽装のclient_idを追加

  • を。
  • クライアントのユーザ名とロールをペイロードに含む管理者用の新しいトークンを要求するため、基本的にクライアントトークンになりますが、2つの追加フィールドもあります: "impersonated = true"と "impersonator_admin_id = x "となる。

クライアントロールで.net組み込み許可属性を使用する方が簡単になるので、2番目の方が望ましいです。 しかし、これがセキュリティホールを開くか、.NetのOAuthAuthorizationServerを使って実際に実装できるかどうかはわかりません。

+0

http://stackoverflow.com/questions/22512794/oauth-2-0-acting-on-behalf-of-the-user –

答えて

0

偽装には、「他人になる」ことができるため、常に重大なセキュリティ上の影響があります。

このような理由から、この状態を可能な限り可視にする必要があります。集中的な監査ログを導入します。また、(実際のログインと偽装ログインを区別するために)JWTアクセストークン内のこの非常に特殊な状態に関する情報を、第2のポイントで説明したように、偽装されたユーザーのプロファイルに偽装プロパティーと偽装プロパティーを追加します。あなたはおそらく、このような要求を除いて、通常のAPIエンドポイントを持つ終わるだろう最後に

...を通じて」サービスを利用できるようになる、特定の偽装トークンを配るだろう
POST https://YOUR_DOMAIN/users/{user_id}/impersonate 
Content-Type: 'application/json' 
Authorization: 'Bearer {ACCESS_TOKEN}' 
{ 
    impersonator_id: "IMPERSONATOR_ID" 
} 

...ユーザーの目 "。

1

あなたのリンクから、まず管理者がユーザーを偽装しているのか、代わって行動しているのかを判断します。 !=偽装オン代わっ-の

  • 独自のアイデンティティを維持し、Bからのすべての権限を与えられたとき、AはBに代わって動作

  • AがBを偽装していることに注意してください全ての意図および目的AのためにBである場合JWT RFC

このpの任意の特定の請求項で定義されていません願うこのdraftで著者は

{"obo": { 
    "prn":"mailto:[email protected]", 
    "ctx":["urn:adatum.com:calendar"] 
}} 
  • prnoboオン代わっ-のJWTのベアラが代わって行動している人のためのプリンシパルを識別する含めることを提案します。

  • ctxベアラがプリンシパルに代わって動作することが許可されている許可コンテキスト。この主張は必須で委任権利がoboクレームがIANA's JSON Web Token Claimsに含まれていないことを

注意を行使されるべきコンテキストを制限する必要があるので、彼らは勧告として取られるべきです。そこ同様の主張azpはOpenIDのであるが、それを

  • azpを適用する方法は明らかではない:許可パーティー - IDトークンを最初に、あなたの質問に答える

を発行した当事者私はあなたが代わって行動することについて話していると思うので、client_idとセキュリティコンテキストを含めてください。 2番目のケースは偽装です。

関連する問題