1

クレーム ベースの SharePoint 2010 Web サイトを所有しており、バックエンドの非クレーム対応システム (K2 blackpearl) を呼び出す必要があります。

したがって、これを達成するために、ここで説明されているように、Windowsトークンサービスへのクレームを使用してユーザーになりすますことを試みています

ここで、ユーザー UPN を使用して c2wts を呼び出し、次のコードを使用して要求に変換します。

WindowsIdentity windowsIdentity = null;
SPSecurity.RunWithElevatedPrivileges(
delegate()
{
windowsIdentity = S4UClient.UpnLogon("user@domain.com");
});

windowsIdentity.ImpersonationLevel が Impersonate ではなく Identification であることを偽装すると

using (WindowsImpersonationContext c = windowsIdentity.Impersonate())
{
Debug.WriteLine(WindowsIdentity.GetCurrent().ImpersonationLevel); // returns Identification
ConnectToK2();
c.Undo();
} 

これは、トークンを使用してサービスを呼び出そうとすると失敗するため、問題を引き起こしていると思います。上記の記事では、偽装されたトークンを取り戻す方法について説明していますが、私はこれを行うことができません。

私が間違っているかもしれないことを誰かが知っていますか?

ありがとう

4

1 に答える 1

0

偽装レベルを偽装と等しくするには、web.configで偽装をfalseに設定します。

    <identity impersonate="false" />

また、「SPSecurity.RunWithElevatedPrivileges」内で偽装を実行しないようにしてください。この方法では、偽装を2回実行します。最初はWebアプリケーションプールアカウントとして(これはRunWithElevatedPriviligesが引き起こしているものです)、次にc2wtsのトークンを使用して手動で偽装します。

于 2012-11-30T08:42:58.273 に答える