2016-12-01 15 views
0

IDPとしてADFSを持つ顧客向けに、アプリケーションでSAML認証を有効にする必要があるという要件があります。標準のJavaアプリケーションを使用したSpring Security SAML

さまざまなオプションを検討した後、ドキュメントで提供されているように、SAMLセキュリティを使用してこれを実行できました。 問題は、SAMLセキュリティをアプリケーションに統合することです。

残念ながら、私たちのアプリケーションはまだサーブレットとJSPを使用しており、スプリングベースではないleagacy Javaアプリケーションです。 私は2をどのように統合できるのか不思議に思っていました。この文書には、これが可能であることが記載されています。しかし、私はそれを書くことができませんでした。

誰かがこのアプローチのガイドラインを提供できる関連先に私を案内できますか?

ありがとうございました。

答えて

1

クラス内のパッケージorg.springframework.security.saml.webssoには、SAML処理機能のコアが含まれ、Spring Securityとは独立しています。 Springからのクラスインポートはほとんど含まれていないため、Springコアクラスはクラスパス上にある必要がありますが、アプリケーション自体でSpring/SpringSecurityを使用する必要はありません。

あなたはSpring Securityに固有のロジックを再実装する必要があります - パッケージorg.springframework.security.saml - SAMLEntryPoint,SAMLProcessingFilter、および認証ライフサイクル中に実装を呼び出してください。これらのクラスのロジックはシンプルなので、基本的なユースケースを有効にするのは簡単です。

+0

感謝ウラジミールに即興または任意の欠陥を識別するための任意の提案をお願い申し上げます。私はこのアプローチから始めました。流れを理解するために私はしばらくかかったが、私は追いついている。 現在、私はJavaアプリケーションから/ spring-security-saml2/saml/loginへのリダイレクトコールを発行しています。 ADFSからの認証に成功すると、SamlEntryPointにRelayStateプロパティを設定して、ユーザーをJavaアプリケーションにリダイレクトします。今私は、JavaアプリケーションでuserClaimsを取得する必要があります。私はここで何が理想的なアプローチになるべきか疑問に思っていました。 – shirjai

0

ガイダンスのためのVladimírありがとうございます。これは私がSAMLベースの認証のために春のセキュリティと標準レガシーJavaアプリケーションを統合する方法である:

  1. SAMLトークンが
    を満了したときにログインするユーザーを強制する=真forceAuthN = falseを
    セットidpDiscoveryEnabled修正securityContext.xml
    セット successHandlerをauthhandler.jspページに更新しました。春のセキュリティアプリにあり、私のアプリケーションにリダイレクトされました。
  2. JavaアプリケーションのすべてのWeb呼び出しにフィルタが適用されています。この フィルタは
  3. スプリングSAMLはADFS.On成功した認証でユーザーを認証/春-セキュリティSAML2/SAML /ログインのコールをリダイレクト、ユーザーが
  4. Authhandler.jspはインデックスと同じであるauthhandler.jspにリダイレクトされます。 jspですが、取り出されたクレームはここに隠れたフィールドです。隠しフィールドのこれらの値は、私のstandarda javaアプリケーションに返送されます。
  5. 私のJavaアプリケーションは、他のアプリケーションレベルの認証を実行し、必要に応じて処理を進めます。

は、指導のための上記のアプローチ

関連する問題