2011-07-04 12 views
2

私は、ビジネス対顧客インターフェースとビジネス対ビジネスインターフェースの両方でアプリケーションを開発するシナリオを持っています。相互認証ベースの認証は、同じアプリケーション内の異なるパスに対して、基本認証と共存できますか?

B2Bインターフェイスは、素敵なフレンドリなインターフェイスを通じてB2Cインターフェイスが操作するリソースを変更するRESTfulインターフェイスです。

B2BインターフェイスはB2Cインターフェイスより多くの機能にアクセスできるため、B2Bインターフェイスは相互証明書認証を使用する必要があります。

当社のターゲット環境/スタックApacheのです=> Tomcatの=>のGrails =>無関係なインフラ

私の現在の研究では、Apacheが認証を行って、その後、Tomcatに上の認証の詳細を渡しされることを示しますか?これは本当ですか?私は欲しいものを提供するような春のセキュリティプラグインを見てきました。私はどちらかのオプションを単独で提供できると確信しています。

私は、複数の異なる認証メカニズムを設定することについて議論していません。

注:私はフォールバック認証の後ではありません。 Mutual Certificate authを使用してB2Bにアクセスできない場合は、基本認証を使用するオプションはありません。

答えて

0

はい、できます。 2つの解決策があります。

1.まずソリューション

ここにトリックがクライアント認証を求めるためにApacheを設定、それを必要としないことです。これは、Apacheの設定で、次のように構成されています:

アプリケーションレベルで
<VirtualHost mysite:443> 

    //usual SSL VHost config 

    SSLVerifyClient optional 


    RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s" 
    RequestHeader set SSL_CLIENT_I_DN "%{SSL_CLIENT_I_DN}s" 
    RequestHeader set SSL_SERVER_S_DN_OU "%{SSL_SERVER_S_DN_OU}s" 
    RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s" 

    ProxyPass   http://localhost:50161/path_to_protect 
    ProxyPassReverse http://localhost:50161/path_to_protect 

</VirtualHost> 

、あなたは敏感なパスのために、Apacheがヘッダをチェックして、証明書を提供することを確認する必要があります。あるいは、Apacheレベルで(タグ経由で)このアクセス制御を行うこともできます。 非機密パスの場合、ログイン/パスワードを尋ねるようにアプリケーションを設定できます。

2.第二の溶液

あなたは、Apacheに2つの仮想ホストを宣言することができます。でSSLVerifyClientで構成されたものはを必要とし、それはあなたの敏感なパスへのアクセスを許可し、でSSLVerifyClientオプションで構成されたものとあなたの非機密パスにのみアクセスを許可します。