2017-02-17 15 views
1

現在、顧客向けのアプリケーションを開発中です。このプロジェクトでは、配布可能なWARファイルのみを配布するという制約があります。顧客はインフラストラクチャを提供し、インフラストラクチャとの大きなずれを許容しません。Spring-Security + SAML:単一のサービスプロバイダとして機能する複数のアプリケーションの認証

アプリケーションは、Spring Boot、Spring Security、SAMLで開発されています。現在のバージョンは単一のモノリシックなWARファイルです。

現時点では、複数の理由(保守性、導入、コード品質など)のために、このモノリシックアプリケーションを別々のアプリケーションに分割しています。残念ながら、我々はこれらの特定の制限付きで承認を実装する方法をまだ知らない:


インフラの制約:

  • アプリケーションでは、カスタムのIDプロバイダが提供されたJBoss EAP 7.0
  • 上に展開されますお客様による
  • IdPとの通信は、SAML 2.0で実装する必要があります。

IDPは、以下の制限がありますカスタム:

  • 認証は、認証されたユーザーのみが
  • つだけSPのメタデータファイルを提供することができるアプリケーションに到着意味プロキシ、を介して行われ、ユーザーデータベースにリンクされているためです。すべてのアプリケーションで同じユーザーデータベースを共有したいと考えています。
  • SPメタデータファイルはAssertionConsumerService - ロケーションが静的メタデータファイルで定義されているとのAuthnRequest

問題の説明でオーバーライドすることはできません1 AssertionConsumerService - ロケーション

  • を提供することができます。

    各アプリケーションは、役割とアサーションを受け取るためにIdPでそれ自身を認証する必要があります。現在の(モノリシックな)デプロイメントでは、単一のAssertionConsumerServiceしか必要ないので、これは問題ありません。新しいアーキテクチャでは、各アプリケーションはIdPにリダイレクトできますが、IdPは静的に構成されたACSにのみリダイレクトできます。 1つのACSのみが可能な場合、どのように各アプリケーションがAuthnResponseを受信できますか?

    アイデア?

  • 答えて

    0

    SAML標準の観点からは、これはSAML IdPプロキシで実現できます。 ServiceProvidersとして機能するあなたのアプリは、IdPプロキシのIdP部分としか通信しません。実際のIdPは、IdPプロキシのSPとのみ通信します(したがって、単一のACS URLのみが存在します)。

    +0

    はい、可能な解決策のようです。しかし、独自のIdPを実装することは、多くの作業のように聞こえる。すでにこれを行っている既存のライブラリを知っていますか? – Dave

    +0

    私はIdPプロキシを実装する単一のライブラリがあるとは思っていませんが、この機能を提供するいくつかのプロジェクト/製品があります。それでも、導入、保守、運用するためのインフラストラクチャコンポーネントが追加されていますが、私が知っている唯一の標準ベースのアプローチです。 –

    +0

    同じ問題を調査していますが、試してみませんでしたが、https: //github.com/OpenConext/OpenConext-idensysは、JavaベースのSAMLプロキシであるようです。 –