0

多くのアプリと PSI の間の「ゲートキーパー」になる Web サービスを開発しています。問題は、「多くのアプリ」がログイン/パスワードを提供し、Web サービスがそれらを PSI に対して認証する必要があることです。しかし、私が何をしても、「PSIFormsLogin.Login(user,password)」メソッドを呼び出すと、常に 401 Unauthorized エラーが発生します... ファームを実行しているユーザーも使用していました...

また、次の MS チュートリアルにも既に従いました: http://msdn.microsoft.com/en-us/library/ff181538.aspx

結局、私がやりたいことは、PSI Web サービスを使用して提供されたアカウント/パスワードを検証することだけです。だれか、私が間違っていることを教えてもらえますか?

PS: WCF ではありません

新しい情報: 何かおかしいことが起こりました。意図的に URL を存在しないものに切り替えました: http://myserver/pwa/_vti_bin/psi/bla.asmxしかし、それでも 401 が返されます...

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;

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

しかし、「PSIFormsLogin.Login」という関数については聞いたことがありません。

たぶん、C#でPSIへの接続を設定するための私のブログエントリはあなたにとって興味深いものです:PSIを介したProjectServer2010CustomFieldsを読んでください

于 2012-04-27T09:21:26.263 に答える