API で偽装 ("act as") を許可する必要があります。したがって、適切な権限を持つユーザーは、別のユーザーとして API を実行できます。この分野で採用されている特定の戦略があるかどうか疑問に思っていますか?
偽装を開始および終了するエンドポイントを作成できます。偽装を開始するには、ユーザーとそのアクセス許可を取得し、現在の要求のためにそれらをメモリにロードする必要がありますが、これは簡単なことです。その後のリクエストはどうなりますか?「Impersonated-User」を示す HTTP ヘッダーを追加するのは悪い習慣ですか? そのヘッダーが存在する場合、それを使用して後続のリクエストで認証を行いますか? その UserId で Cookie を使用するのはどうですか? それとも追加情報?
偽装されたユーザーを Thread.CurrentPrincipal に割り当てることには、(.NET impl を想定して) 追加の利点がありますか? 現在のパーミッションとロールの実装はカスタムであり、基本的にはビット配列を使用しています (ただし、これは将来変更される予定です)。