「ローカルシステム」アカウント、つまりNT AUTHORITY/SYSTEMで実行されるWindowsサービスの下でホストされるWCFサービスからデータを取得するSilverlightアプリケーションがあります。Windows認証が機能していません。 - ORA-01017:無効なユーザー名/パスワード。ログオンが拒否されました
私はまたとして統合セキュリティ= SSPIを使用して、Oracleの接続文字列でWindows認証を有効にしている私のApp.configファイルに以下
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="defaultServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="winAuthBasicHttpBinding" openTimeout="05:00" sendTimeout="05:00" >
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
<services>
<service behaviorConfiguration="defaultServiceBehavior" name="DataService.CrossDomainService">
<endpoint address="" behaviorConfiguration="webHttpBehavior" binding="webHttpBinding" contract="DataService.ICrossDomainService">
<identity>
<dns value="107.0.0.12"/>
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://107.0.0.12:2035/"/>
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="defaultServiceBehavior" name="DataService.NewDataService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="winAuthBasicHttpBinding" contract="DataService.INewDataService">
<identity>
<dns value="107.0.0.12"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://107.0.0.12:2035/DataService/"/>
</baseAddresses>
</host>
</service>
</services>
を使用して、このWCFサービスにWindows認証を有効にしています以下:
<connectionStrings>
<add name="netTiersConnectionString" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=107.0.0.17)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=SVC001)));Integrated Security=SSPI; Min Pool Size= 1; Max Pool Size= 5;" />
SilverlightアプリケーションがWCFサービスを呼び出すと、Windows認証を使用するSilverlightアプリケーションのログインユーザーのdomainname/username資格情報ではなく、NT AUTHORITY/SYSTEMアカウントを使用してデータベース接続が行われます。したがって、無効なユーザー名エラーが発生します。
コンソールアプリケーションでWCFサービスをホストすると、同じ構成が正常に機能します。しかし、私はWindowsサービスでホストすると、それはローカルシステムアカウントの下で実行されるので、私はこの問題を推測します。データベース接続がユーザーではなくローカルシステムアカウントでログインしてのWindows認証資格情報を使用して行われるように
私は何ができますか?
おかげで、 パンカジChamria
感謝。しかし、IISでそれをホストすることは私の選択肢ではありません。 –