3

CheckAccessをオーバーライドし、URLの一部であるカスタム認証トークンを検証するカスタムServiceAuthorizationManagerがあります。検証した後、GenericPrincipalを使用してThread.CurrentPrincipalを設定します。しかし、リクエストが最終的に私のサービスメソッドに到達すると、Thread.CurrentPrincipalがなくなり、認証マネージャーで設定したものではなくなります。何が問題なのですか?

4

2 に答える 2

6

これを回避するには、サービス認証マネージャーを登録するサービス動作でprincipalPermissionMode="None"を設定します。これは、現在のスレッドにプリンシパルを配置しないようにwcfランタイムに指示することになっています。「カスタム」に設定すると、GenericPrincipalを使用して設定したプリンシパルが上書きされます。

于 2011-10-21T18:40:38.417 に答える
1

組み込みのメカニズムを承認に使用したくない場合、WCFでは、現在のプリンシパルをIAuthorizationPolicyを介して識別し、WCFパイプラインに適切に統合する必要があります。'Custom'のPrincipalPermissionModeを指定する必要があります。

詳細な概要については、次の記事を参照してください:WCFベースのサービスでの承認

于 2011-10-20T02:00:41.917 に答える