質問

私が開発中のアプリは、リモート ボックス上で実行されている既存のアプリケーションとインターフェイスします。リモート アプリとの通信は、パブリック Web サービスを介して行われます。安全に送信する必要がある機密データを処理するためにクライアントが Web サービスを利用する機能強化を構築するよう依頼されました。

誰かが私に最善の進め方についてアドバイスをくれませんか?

役に立ちましたか?

解決

まず、SSL を使用し、それを使用していないリクエストを拒否する必要があります。これにより、インターネット上で送信されるデータが暗号化されます。

SOAP を使用している場合は、ユーザー名/パスワードを受け取るカスタム ヘッダーをサービス内に定義できます。次に、各パブリック メソッドの最初の行で、ユーザー名とパスワードをデータベースと照合して検証します。成功した場合は、HttpContext.Current.User を適切に設定すると、サービスが組み込みの Asp.NET インフラストラクチャとうまく連携します。

追加した: 以下は、認証用のユーザー名とパスワードを含むサンプル SoapHeader です。

// define the header
public class AuthenticationHeader : SoapHeader
{
    public String UserName { get; set; }
    public String Password { get; set; }
}

// your service
public class PublicWebService : WebService
{
    // defines an instance of the header as part of the service
    public AuthenticationHeader Authentication;

    private void Authenticate()
    {
        // validate the username / password against a database
        // set the HttpContext.Current.User if successful.
        // Maybe throw a SoapException() if authentication fails
    }

    // Notice the SoapHeader("Authentication") attribute...
    // This tells ASP.Net to look for the incoming header for this method...
    [WebMethod]
    [SoapHeader("Authentication")]
    public void PublicMethod1()
    {
        Authenticate();

        // your code goes here
    }

    // Expose another method with the same authentication mechanism
    [WebMethod]
    [SoapHeader("Authentication")]
    public void PublicMethod2()
    {
        Authenticate();

        // your code goes here
    }
}

ここで、wsdl ツールを実行すると、生成されたプロキシ クラスには、定義された認証ヘッダーが含まれます。

PublicWebService s = new PublicWebService();
s.Authentication = new AuthenticationHeader();
s.Authentication.UserName = "xxxxxxxx";
s.Authentication.Password = "yyyyyyyy";
s.PublicMethod1();
s.PublicMethod2();

他のヒント

DIYルート:

  1. セキュリティについて読んでください (「」で始まる)秘密と嘘」などの一般書籍を参照してから、専門的な内容に進みます。

  2. リスク分析とスレッド評価を実行します。何を、何から、そしてどこから脅威を保護しているのかを理解します。「高度なセキュリティ」は必要ないと思われます1.

  3. TLS (別名 SSL) を使用します。

  4. クライアントで、サーバーの証明書が正しいことを確認します。

より良いルート: あなたをサポートしてくれるという定評のある専門家を雇ってください。


1 本当に核兵器工場などを建設しているのでなければ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top