0

現在、多数の既存の PSI Web サービスを呼び出す ExtendedPSI Web サービスを開発しようとしています。問題は、エラーが表示されることです

System.Net.WebException: HTTP ステータス 401 で要求が失敗しました: 権限がありません。

作成した ExtendedPSI から既存の PSI サービスにアクセスしようとすると、.

次のスニペットを使用して、ExtendedPSI で資格情報をハードコーディングすると、サービスを機能させることができます。

resWS.Credentials = new NetworkCredential("userName", "userPass", "domain");

しかし、私が使用するときではありません:

resWS.Credentials = CredentialCache.DefaultCredentials;

(私は CredentialCache.DefaultNetworkCredentials を試しましたが、これは HTTP または FTP では機能しません)

クライアントのweb.configまたは呼び出し元のwebappの仮想で、Windows認証を有効にしたり、匿名アクセスを削除したりするなどの提案を含む多数の投稿を読みましたが、最終的なソリューションが呼び出されるため、SoapUIを使用してExtendedPSIサービスを呼び出していますESB プラットフォーム (つまり、SAP PI) によって。

しかし、SoapUI を使用して、既存の PSI サービス (ExtendedPSI サービスで呼び出される Web サービス) のそれぞれを SoapUI インターフェイスでログイン情報を提供することで順番に呼び出すことができたので、資格情報を渡すことができる限り既存のサービスが機能することがわかりました。ただし、 CredentialCache.DefaultCredentialsを使用する場合は空です。

これが誰かにとって意味があることを願っています (これは Web サービスでの私の最初の試みなので、少しあいまいな場合はお詫びします)。サービス内でログオンの詳細をハードコーディングしたくないので、誰かが以前にこれに遭遇し、使用できる解決策を持っていることを願っています...

必要な情報は HttpContext で保持されますか? たぶん渡すことができる暗号化されたトークン(ここにたどり着くだけです:)? それとも、これらの既存の PSI Web サービスにアクセスするには一般ユーザーが必要ですか?

参考までに: 私は記事http://msdn.microsoft.com/en-us/library/bb428837.aspx (既存の PSI を呼び出すためにさらに拡張しました) に従いましたが、サービスを呼び出す何らかの MS.NET クライアントを想定しています。 .

前もって感謝します...

よろしく、 タータンボノ

4

1 に答える 1

0

web.configこのようにアプリケーションのを変更する必要があります。バインディングノードのセキュリティノードを上書きするだけです。

<binding name="WssInteropSoap">
  <security mode="TransportCredentialOnly">
    <transport clientCredentialType="Ntlm" proxyCredentialType="Ntlm"
        realm="" />
    <message clientCredentialType="UserName" algorithmSuite="Default" />
  </security>
</binding>

これで、特別なアカウント(Windowsからのパススルー)なしで、または次のコードを使用して認証できます。アカウントを指定できます。

//credential impersonation (just if you changed your binding settings)
projectSvc.ClientCredentials.Windows.ClientCredential = new NetworkCredential("username", "password", "domain");
projectSvc.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

私はそれが役立つことを願っています:)

PSIへの接続を設定するためのブログエントリも作成しました。PSIを介したProjectServer2010CustomFieldsの読み取り

于 2012-04-27T09:15:22.053 に答える