問題タブ [spring-saml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
14753 参照

java - Spring Security SAML 実装

私はSSOを使用する予定の新しいSpringプロジェクトから始めています。私はブログを更新し、Spring Security SAML が SP に最適なソリューションになることを知りました。

そこで、Spring サイトhttps://github.com/SpringSource/spring-security-samlが提供する Spring Security SAML サンプル アプリケーションを SP として Shibboleth IDP と共に実装しました。

IDP は LDAP サーバーに接続します。Spring セキュリティ サンプル アプリケーションを実行できました。

この Spring セキュリティ SAML 拡張機能を複数の Spring プロジェクトと一緒に使用する方法がわかりません。

複数の Spring MVC アプリケーションとの Spring SAML プロジェクト統合の設計に関するリンクの例や提案は役に立ちます。

0 投票する
1 に答える
1622 参照

spring - Spring SAML - SP HTTP リクエストにカスタム フィールドを追加する方法は?

私のサービス プロバイダーは、HTTP-Post バインディングを使用してリクエストを IDP に送信します。フォームに新しいフィールドを追加する必要があります。現在、「SAMLRequest」と「RelayState」を送信していますが、「option」と「profile」も送信する必要があります。これらは IDP で必要なフィールドです。Spring Saml セキュリティでこれを達成するにはどうすればよいですか?

0 投票する
2 に答える
1662 参照

java - Weblogic 12c に Spring Security SAML 拡張機能をデプロイする際の問題

サンプル アプリケーションを Weblogic 12c にデプロイしようとしています。Tomcat では問題なく実行できますが、Weblogic にデプロイしようとすると、次のエラーが発生します。

SEVERE: コンテキストの初期化に失敗しました java.lang.NoClassDefFoundError: org/apache/log4j/Logger

pom.xml を確認したところ、依存関係に log4j が含まれていることがわかりました。スタックトレースは次のとおりです。

重大: コンテキストの初期化に失敗しましたorg.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) org .springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:676) at org.springframework.context.support.AbstractApplicationContext.org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383) の refresh(AbstractApplicationContext.java:451) org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) の org.springframework .web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) で weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:678) で weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java) :321) で weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) で weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) で weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.ジャワ:243) weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:200) weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:185) weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java :1838) weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2876) で weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661) で weblogic.servlet.internal.WebAppModule.start(WebAppModule. java:823) の weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360) の weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356) の weblogic.application.utils.StateMachineDriver .weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138) の nextState(StateMachineDriver.java:42) weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) の weblogic.application.internal .flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211) weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) ) weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:73) で weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24) で weblogic.application.internal.BaseDeployment$2.next で(BaseDeployment.java:729) weblogic.application.utils で。StateMachineDriver.nextState(StateMachineDriver.java:42) の weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258) の weblogic.application.internal.EarDeployment.activate(EarDeployment.java:61) の weblogic.application.internal .DeploymentStateChecker.activate(DeploymentStateChecker.java:165) で weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80) で weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:226) でweblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:418) の weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51) の weblogic.management.deploy.internal.DeploymentAdapter.activate (DeploymentAdapter.java:200) weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30) で weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240) で weblogic.management.deploy.internal. weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123) の ConfiguredDeployments.activate(ConfiguredDeployments.java:169) weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:210) の weblogic .management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:118) で weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:78) で、sun.reflect.GeneratedMethodAccessor5.invoke(不明なソース) で sun.reflect.DelegatingMethodAccessorImpl で.org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1017) で java.lang.reflect.Method.invoke(Method.java:606) で org.jvnet で (ReflectionHelper.java:1017) を呼び出す (DelegatingMethodAccessorImpl.java:43) .hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:388) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:430) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java) :456) org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) で org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) で org.jvnet.hk2. internal.Utilities.createService(Utilities.java:2488) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:606) org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:77) org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:231) org.jvnet .hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:254) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:413) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java) :456) org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) で org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) で org.jvnet.hk2. internal.Utilities.createService(Utilities.java:2488) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) at org.jvnet.hk2.internal.org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1162) の ServiceHandleImpl.getService(ServiceHandleImpl.java:87) org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run( CurrentTaskFuture.java:1147) で weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548) で weblogic.work.ExecuteThread.execute(ExecuteThread.java:311) で weblogic.work.ExecuteThread.run(ExecuteThread.java) で:263) 原因: java.lang.ClassNotFoundException: org.apache.log4j.Logger at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 76 もっと見る

(XMLConfigurator.java:60) org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java: 27) org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) で切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください。 java:355) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で java.lang.ClassLoader.loadClass(ClassLoader.java:425) で切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください

(XMLConfigurator.java:60) org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java: 27) org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) で切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください。 java:355) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で java.lang.ClassLoader.loadClass(ClassLoader.java:425) で切り捨てられました。org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) の完全なスタック トレース (XMLConfigurator.java:60) のログ ファイルを参照してください。 org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) のブートストラップ(PaosBootstrap.java:27) は切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください。 java:355) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で java.lang.ClassLoader で。loadClass(ClassLoader.java:425) 切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください(DefaultBootstrap.java:195) org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) で org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) で org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory( SAMLBootstrap.java:42) 切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください。(URLClassLoader.java:355) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で java.lang.ClassLoader.loadClass(ClassLoader.java:425) で実行切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください

これが Weblogic を爆撃している理由はありますか? 前もって感謝します!

0 投票する
1 に答える
1041 参照

spring-saml - Spring SAML サーブレット例外

Spring Security SAML サンプル アプリケーションの weblogic 12c バージョンを作成しました。実行しようとすると、次のエラーが表示されます。

]] ServletException の根本原因。weblogic.servlet.jsp.CompilationException: JSP のコンパイルに失敗しました /WEB-INF/security/idpSelection.jsp idpSelection.jsp:1:1: The validator class: "org.apache.taglibs.standard.tlv.JstlCoreTLV" has failed with次の例外: 「java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory を javax.xml.parsers.SAXParserFactory にキャストできません」。<%@ ページ ^------- import="org.springframework.security.saml.metadata.MetadataManager"%> --------------------- -------------------------------------------------- -----^

weblogic.servlet.jsp.JavelinxJSPStub.reportCompilationErrorIfNeccessary(JavelinxJSPStub.java:244)で weblogic.servlet.jsp.JavelinxJSPStub.compilePage0(JavelinxJSPStub.java:180)で50) weblogic.servlet.jsp.JavelinxJSPStub$1.run(JavelinxJSPStub.java:108) で java.security.AccessController.doPrivileged(Native Method) で切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください

<[ServletContext@11256322[app:_auto_generated_ear_ module:SAML2Sample path:null spec-version:3.0]] エラーページの提供中に問題が発生しました。javax.servlet.ServletException: weblogic.servlet.jsp.CompilationException: JSP のコンパイルに失敗しました /error.jsp error.jsp:1:1: バリデータ クラス: "org.apache.taglibs.standard.tlv.JstlCoreTLV" が失敗しました次の例外: 「java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory を javax.xml.parsers.SAXParserFactory にキャストできません」。<%@ page import="java.io.StringWriter" %>

^------------------------------------------------------^

weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:306) で weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:483) で weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:372) で) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:243) で weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:587) で切り捨てられました。完全なスタック トレースについては、ログ ファイルを参照してください次の例外で失敗しました: 「java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory は javax.xml.parsers にキャストできません。

^------------------------------------------------------^

weblogic.servlet.jsp.JavelinxJSPStub.reportCompilationErrorIfNeccessary(JavelinxJSPStub.java:244)で weblogic.servlet.jsp.JavelinxJSPStub.compilePage0(JavelinxJSPStub.java:180)で50) weblogic.servlet.jsp.JavelinxJSPStub$1.run(JavelinxJSPStub.java:108) で java.security.AccessController.doPrivileged(Native Method) で切り捨てられました。完全なスタック トレースのログ ファイルを参照してください >

CompilationException の原因について何か考えはありますか? ありがとう!

0 投票する
1 に答える
69 参照

saml - 署名付き SAML IdP メタデータの使用例は何ですか?

メタデータに署名することは、最初のメタデータ交換以外で何らかの形で役立ちますか? 署名チェックをスキップするリスクは何ですか?

0 投票する
1 に答える
2851 参照

spring-security - SP メタデータを SSOCircle Spring Security SAML 拡張にインポートする際の問題

Spring Security SAML 拡張サンプル プログラムを実行しており、サービス プロバイダーのメタデータを生成できます。ただし、SP メタデータを SSOCircle にインポートしようとすると、次のエラーが発生します。

メタデータのインポート

データをインポートできませんでした。理由:

DefaultValidationEventHandler: [FATAL_ERROR]: 要素の予期しない終了 {urn:oasis:names:tc:SAML:2.0:metadata}:Extensions 場所: 4 行目 レルム「/」の下のエンティティ記述子「localhost」の構文が無効です。

この投稿の提案に従ってみましたが、検出をオフにすると、ページが表示されなくなり、SSOCircle が表示され、次のように表示されます:エラーが発生しました。理由: SAML 要求が無効です。

私が間違っていることについてのアイデアはありますか?ところで、私は SAML 拡張機能の 1.0.0.RELEASE バージョンを使用しています。

ありがとう!

0 投票する
1 に答える
529 参照

spring-saml - Spring SAML サービス プロバイダーの暗号化されたアサーションを要求する

私は Spring SAML を使用しており、暗号化されたアサーションを受け入れるサービス プロバイダーを構成しています。暗号化されていないアサーションを拒否するように SP を構成する方法はありますか?

0 投票する
3 に答える
7428 参照

spring-security - ExtendedMetadata の「signingAlgorithm」フィールドの設定

Spring SAML 統合を取得して IdP の正しいメタデータ ファイルを生成する際に問題が発生しています。新しい SHA256 SSL 証明書が発行されました。適切なキーストアを作成し、Spring セキュリティ構成ファイルをすべて設定するためのすべての手順を実行しました。私は文字通りそこまでの道のりの 98% のようですが、生成されたメタデータ ファイルに欠けているものが 1 つあります。

MetadataGeneratorFilter の ExtendedMetadata 構成は次のとおりです。

アプリを実行し、/saml/metadata URI に移動して、Spring に IdP に送信する必要があるメタデータ ファイルを生成させると、SHA256 アルゴは SignatureMethod で正しく設定されますが、子の DigestMethod タグのアルゴリズム値はまだ設定されています。 SHA1 値ではなく、SHA256 値である DigestValue と共に ALSO を SHA256 に設定する必要がある場合は、SHA1 に。

DigestMethod アルゴリズムの値を 256 に設定するためにどのように/何を設定する必要があるかについて、誰かが私を案内してくれますか? これは SignedInfo タグの子であるため、Extendedmetadata 構成からsigningAlgorithm値を継承すると考えましたが、残念ながらそうではありません。

どんな助けでも大歓迎です。本当にありがとう。

解決策 - 誰かが気になる場合

そのため、1 日かけて掘り下げた後、これを自分で実装することにしました。フィールド digestMethodAlgorithm を追加して ExtendedMetadata クラスを拡張し、適切なゲッター/セッターを追加しました。

次に、上記の春のセキュリティ構成を変更して、この新しい Bean プロパティを MetadataGenerator 構成に設定するようにしました。

次に、SAMLUtil クラスにも 2 つの変更を加える必要がありました。getmetadataAsString の isSignMetadata() if-clause で、上記の構成によって設定された digestMethodAlgorithm に挿入された値を取り出し、さらに marshallAndSignMessage メソッドを変更して、DigestMethod アルゴを適切に設定するためにさらに使用する新しい入力パラメーターを受け入れるようにしました。 .

SAMLUtil.getMetaDataAsString の内部、572 行目

SAMLUtil.marshallAndSignMessage 内の 437 行目の直後に、次を追加/変更しました。

Spring SAML コア パッケージ全体を Gradle 経由で再コンパイルしました。メタデータ ファイルの正しい SHA256 署名部分を含むメタデータ ファイルを正常に取得しました。

プロジェクトの将来のリリースでこの機能を失いたくないので、このプロジェクトの git リポジトリにこれをコミットするために何ができるかを見ていきます。このようなオープンソース プロジェクトに貢献したことはありません。

0 投票する
1 に答える
5790 参照

spring-security - Spring Security SAML の信頼できる証明書エントリはパスワードで保護されていません

spring-saml2-sample アプリを自分のアプリケーションに統合しています。私のサービス プロバイダーは Shibboleth IDP に接続します。Spring Security SAML アプリケーションに付属の samlKeystore.jks で提供されるプライベート証明書を使用して SP をテストしています。次のコマンドを使用して、IDP 署名公開鍵をキーストアに登録しました: keytool -importcert -alias idpSignKey -keypass passwordS -file key.cer -keystore samlKeystore.jks

アプリを実行し、IDP でログインできます。saml メッセージで返された公開証明書が、idp メタデータにあり、キーストアに登録されているものに対応していることをログで確認できます。JKSKeyManager から idp クレデンシャルを取得中にアプリが壊れます。

java.lang.UnsupportedOperationException: 信頼できる証明書エントリはパスワードで保護されていません java.security.KeyStoreSpi.engineGetEntry(不明なソース) java.security.KeyStore.getEntry(不明なソース) KeyStoreCredentialResolver.java:132) org.opensaml.xml.security.credential.AbstractCriteriaFilteringCredentialResolver.resolve(AbstractCriteriaFilteringCredentialResolver.java:57) org.opensaml.xml.security.credential.AbstractCredentialResolver.resolveSingle(AbstractCredentialResolver.java:30) org.opensaml. xml.security.credential.AbstractCredentialResolver.resolveSingle(AbstractCredentialResolver.java:26) org.springframework.security.saml.key.JKSKeyManager.resolveSingle(JKSKeyManager.java:172) org.springframework.security.saml.key.JKSKeyManager.getCredential(JKSKeyManager.java:194) org.springframework.security.saml.trust.MetadataCredentialResolver.retrieveFromMetadata(MetadataCredentialResolver.java:102) org.opensaml.security.MetadataCredentialResolver.resolveFromSource(MetadataCredentialResolver.java:169)

これは、keyManager が contextSecurity.xml でどのように見えるかです。

<!-- Central storage of cryptographic keys --> <bean id="keyManager" class="org.springframework.security.saml.key.JKSKeyManager"> <constructor-arg value="classpath:security/samlKeystore.jks"/> <constructor-arg type="java.lang.String" value="nalle123"/> <constructor-arg> <map> <entry key="apollo" value="nalle123"/> <entry key="idpSignKey" value="passwordS"/> <entry key="idpEncKey" value="passwordE"/> </map> </constructor-arg> <constructor-arg type="java.lang.String" value="apollo"/> </bean>

これは、idp の拡張メタデータです。

<bean class="org.springframework.security.saml.metadata.ExtendedMetadata"> <property name="local" value="false"/> <property name="securityProfile" value="metaiop"/> <property name="sslSecurityProfile" value="pkix"/> <property name="signingKey" value="idpSignKey"/> <property name="encryptionKey" value="idpEncKey"/> <property name="requireArtifactResolveSigned" value="false"/> <property name="requireLogoutRequestSigned" value="false"/> <property name="requireLogoutResponseSigned" value="false"/> <property name="idpDiscoveryEnabled" value="false"/> </bean>