0

ここにいくつかの背景があります!

デフォルトのイントラネット テンプレートを使用して小さな Asp.Net MVC 4 イントラネット サイトを開発し、Windows Authentication. Web Api Controllerまた、サイトのページから JQuery を使用してアクセスするいくつかの REST サービス メソッドを追加して記述しました。には次のWeb.Configものが含まれます。

<authentication mode="Windows" />
<authorization>
    <deny users="?" />
</authorization>

サイトは正常に機能しており、ユーザーWindows Credentialsはサイトにアクセスするためにそれらを提供する必要があります.

問題

Windows API controllerまた、ネットワーク上の別のコンピューターで実行され、前の手順で作成した のアクションの1 つにアクセスする Windows サービスを開発しています。ここでの問題はWindows Credentials、Windows サービス内から RESTful API メソッドを提供できないことです...ユーザーがそのシステムを使用しない可能性があるため...私が意味することを理解してください:

私は何を試しましたか

  1. Web プロジェクトのプロパティで許可Anonymous Authenticationされています。True次にAllowAnonymous、Web API メソッドで属性を使用しました。動作しませんでした。
  2. AuthorizationFilterAttributeWindow Service からアクセスされる API メソッドにのみ適用される別のメソッドを作成しないでください。このようにして、新しい機能が既存のWindows Authentication機能を上書きし、Windows サービスからのみ使用される BASIC 認証用に選択したユーザー名/パスワードを提供できるようになります。そこで、 Rick Strahl のブログのAuthorizationFilterAttribute助けを借りて、新しいクラスを作成しました。

    [AllowAnonymous]
    [AuthorizeCallFromWindowsService]    
    public IssueResponse CloseEmployeeLicenses(int userID)
    {
        return null;
    }
    

繰り返しますが、これは機能しませんでした。API メソッドには同じ Windows 認証資格情報が必要であり、ハードコードされたカスタムのユーザー名/パスワードを使用したいと考えています。

何を提案しますか?前もって感謝します。

4

1 に答える 1

0

同様のシナリオがあり、アプリケーションに Service User という新しいユーザー タイプを作成することにしました。ドメインにサービス アカウントを作成し、(同じネットワーク内にある) サーバーに Windows サービスをインストールしたときに、Windows サービスを強制的にサービス アカウントとして実行しました (ネットワーク ドメイン\ユーザー名とパスワードを使用)。アプリケーションで実際に 3 つのサービス アカウントを作成しました。それぞれの環境に 1 つずつ、ServiceAccountDev、ServiceAccountUAT、ServiceAccountPROD であり、必要に応じて各アカウントを無効/有効にします。

于 2013-09-10T14:19:49.337 に答える