安全断言标记语言(SAML)是一种标准,用于根据用户在另一个上下文中的会话将用户登录到应用程序中。
配置 SAML2:绕过“InResponseTo”验证,同时保留 OpenSaml4AuthenticationProvider 中的默认设置
我有一个在 Nginx 和 Spring Security 后面运行的 Java 后端应用程序用于 SSO。我的后端应用程序缺乏记住 cookie 会话的机制,因为 SSO 请求可能由...发起
我使用 itfoxtec 来构建 saml 身份提供商,并复制此存储库的代码: https://github.com/ITfoxtec/ITfoxtec.Identity.Saml2/tree/master/test/TestIdPCore 当我使用考试时...
将 SAML 访问令牌交换为 oauth 令牌(Azure AD/Entra ID)
我需要 oauth 令牌才能代表用户向第三方 api 发出请求。目前,所有用户都必须使用 Azure AD 通过 SAML SSO 登录。我正在使用 boxyhq 的 saml-jackson 和 next-auth 来
如何使用 @node-saml/node-saml 制作 SAML SP?
我正在开发SAML SP。 我使用 @node-saml/node-saml 库。 虽然我制作了以下源,但 SAML 身份验证不起作用。 你能告诉我如何修复或好的参考制作来源吗
我刚刚使用 SAML 2 阐述了我的项目。我需要一些与 SAML 和 OpenSAML 库 v.2.0 相关的帮助。 有人可以告诉我有用且全面的教程吗?我只想做一个小的POC。 我...
我已成功部署并运行 spring saml 示例。从如下所示的 SAML 响应(IdP -> SP)中,可以识别是否: SAML 响应已签名还是未签名? 断言是加密的...
有没有办法在Flutter App中实现SAML Shibboleth认证?
我目前正在使用 Firebase 开发适用于移动设备(IOS 和 Android)的 Flutter 应用程序,我需要集成 SAML Shibboleth 身份验证。 经过多次研究,我发现 flutter 包...
我们的客户将他们的 SSO (okta/google) 与我们的 SaaS 集成。 现在为了对它们进行身份验证,我们进行 SAML 登录。 golang 中的crewjam 库有以下片段,要求元数据U...
您好,我正在使用 Open Id Connect,我只想知道如何使用 Open Id connect 实现 SAML 令牌。有什么办法 Open Id 协议也支持 SAML。
我正在尝试解密 SAML 响应断言。 我有以下 SAML 响应 我正在尝试解密 SAML 响应断言。 我有以下 SAML 响应 <samlp:Response ID="_c5857dc7-2109-4fd3-beb0-e07756bba622" Version="2.0" IssueInstant="2023-12-18T09:59:24.040Z" Destination="https://sp.com/api/auth/saml" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified" InResponseTo="_1702893559452" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"> <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://adsf.sp.io/adfs/services/trust </Issuer> <samlp:Status> <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" /> </samlp:Status> <EncryptedAssertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> <xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <e:EncryptedKey xmlns:e="http://www.w3.org/2001/04/xmlenc#"> <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> </e:EncryptionMethod> <KeyInfo> <ds:X509Data xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509IssuerSerial> <ds:X509IssuerName>CN=idp-domain.com, O=idp-o, S=idp-S, C=sa</ds:X509IssuerName> <ds:X509SerialNumber>0</ds:X509SerialNumber> </ds:X509IssuerSerial> </ds:X509Data> </KeyInfo> <e:CipherData> <e:CipherValue>*Encrypted Data*</e:CipherValue> </e:CipherData> </e:EncryptedKey> </KeyInfo> <xenc:CipherData> <xenc:CipherValue>*Large Encrypted Data*</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </EncryptedAssertion> 我在CipherValue节点中获取了加密数据,并尝试使用以下代码对其进行解密。 import crypto from 'crypto' const buffer = Buffer.from( '*Large Encrypted Data*', 'base64' ) crypto.privateDecrypt( { key: privateKey, padding: crypto.constants.RSA_NO_PADDING }, buffer ) 我没有得到解密的数据,而是收到以下错误 error:0406506C:rsa routines:rsa_ossl_private_decrypt:data greater than mod len 应该分割我的加密数据吗?还是我的解密方法错误? 对于任何正在寻找答案的人。 解密是一个普通的 XML 解密,您可以使用这个库,它的工作方式就像一个魅力。 https://www.npmjs.com/package/xml-cryption
Rails - 将omniauth-saml 与多个IDP 一起使用
我最终想要的是能够使用 devise 正常登录或选择使用 SAML 登录。所以我读到,如果我整合omniauth和saml,然后整合omniauth和devise,我可以实现......
[https://stackoverflow.com/questions/77341286/saml-error-request-not-signed-policy-requires-signed-authentication-requests#new-answer] - 链接帖子。 (https://i.stack.imgur.com/vNfgI.png)我关注了...
我们有一个 .Net 6 网站,它使用 OIDC 与 Azure AD B2C 集成。网站的登录和注册在 Azure AD B2C 租户的自定义策略中定义。 Azure AD B2C 返回索赔...
在 spring security saml2Login 中对多个身份提供者使用单个 loginProcessingUrl
我试图让用户使用 spring-security 5.7.x 在我们的应用程序中动态设置 SAML 身份提供商。使用 HttpSecurity 实例配置 saml2 时,可以提供
嗨,任何人都可以帮助我,我在关联 SAML 请求和 Relaystate 值时遇到问题,您无权访问该链接,任何人都可以帮助我 需要关联 SAML REQUE...
AADSTS75011 用户通过服务进行身份验证的身份验证方法与请求的身份验证方法 AuthnContextClassRef
https://learn.microsoft.com/en-us/troubleshoot/azure/active-directory/error-code-aadsts75011-auth-method-mismatch#cause SSO 在 Chrome 中有效,但在 Edge 中无效。 有人可以把
用于 Jira Cloud SSO 集成的电子邮件域转换的自定义 AD FS 声明规则
我目前正在将 AD FS 与 Jira Cloud 集成以实现 SSO,并面临电子邮件域不匹配的挑战。 我们的用户 Active Directory 域是 company.local,但我们验证的 Jira 域...
我是一名开发人员,我希望我的应用程序可以在 Google SAML 应用程序目录中使用。 我怎样才能做到这一点? 我没有找到任何有关如何或与谁联系来注册我的应用程序的信息。 你能帮助我吗?
我已经使用 Spring Boot 实现了服务提供者 (SP),并希望生成如下 saml 请求: 我已经使用 Spring Boot 实现了服务提供者 (SP),并希望生成如下 saml 请求: <saml:Assertion Version="2.0" ID="_e2294424-9055-4b32-ac27-39c1c53f66e7" IssueInstant="2023-08-03T09:09:30.036Z" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> <samlp:AuthnRequest Version="2.0" IssueInstant="2023-08-03T09:09:30.036Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL=..... xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" /> <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity" >..... </saml2:Issuer> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">..</ds:Signature> </saml:Assertion> 我如何配置spring security来获取这个saml请求? 我目前收到以下请求,但无法插入断言标签: <samlp:AuthnRequest Version="2.0" IssueInstant="2023-08-03T09:09:30.036Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL=..... xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" /> <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity" >...... </saml2:Issuer> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">..</ds:Signature> </samlp:AuthnRequest> 我假设您正在尝试实现 SP 发起的 SSO 流程,其中包括请求和响应。看来您理解错误,因为 Assertion 元素不能是 AuthnRequest 元素的一部分。 AuthnRequest 的最小工作示例如下所示 <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="ONELOGIN_809707f0030a5d00620c9d9df97f627afe9dcc24" Version="2.0" ProviderName="SP test" IssueInstant="2014-07-16T23:52:45Z" Destination="http://idp.example.com/SSOService.php" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="http://sp.example.com/demo1/index.php?acs"> <saml:Issuer>http://sp.example.com/demo1/metadata.php</saml:Issuer> <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" AllowCreate="true"/> <samlp:RequestedAuthnContext Comparison="exact"> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef> </samlp:RequestedAuthnContext> </samlp:AuthnRequest> Assertion 元素实际上是您将从身份提供商处收到的 Response 元素的一部分。响应示例看起来像这样 <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_8e8dc5f69a98cc4c1ff3427e5ce34606fd672f91e6" Version="2.0" IssueInstant="2014-07-17T01:01:48Z" Destination="http://sp.example.com/demo1/index.php?acs" InResponseTo="ONELOGIN_4fee3b046395c4e751011e97f8900b5273d56685"> <saml:Issuer>http://idp.example.com/metadata.php</saml:Issuer> <samlp:Status> <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/> </samlp:Status> <saml:Assertion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" ID="_d71a3a8e9fcc45c9e9d248ef7049393fc8f04e5f75" Version="2.0" IssueInstant="2014-07-17T01:01:48Z"> <saml:Issuer>http://idp.example.com/metadata.php</saml:Issuer> <saml:Subject> <saml:NameID SPNameQualifier="http://sp.example.com/demo1/metadata.php" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">_ce3d2948b4cf20146dee0a0b3dd6f69b6cf86f62d7</saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData NotOnOrAfter="2024-01-18T06:21:48Z" Recipient="http://sp.example.com/demo1/index.php?acs" InResponseTo="ONELOGIN_4fee3b046395c4e751011e97f8900b5273d56685"/> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions NotBefore="2014-07-17T01:01:18Z" NotOnOrAfter="2024-01-18T06:21:48Z"> <saml:AudienceRestriction> <saml:Audience>http://sp.example.com/demo1/metadata.php</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant="2014-07-17T01:01:48Z" SessionNotOnOrAfter="2024-07-17T09:01:48Z" SessionIndex="_be9967abd904ddcae3c0eb4189adbe3f71e327cf93"> <saml:AuthnContext> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef> </saml:AuthnContext> </saml:AuthnStatement> <saml:AttributeStatement> <saml:Attribute Name="uid" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue xsi:type="xs:string">test</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="mail" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue xsi:type="xs:string">[email protected]</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="eduPersonAffiliation" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue xsi:type="xs:string">users</saml:AttributeValue> <saml:AttributeValue xsi:type="xs:string">examplerole1</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> </samlp:Response> 注意此处的Assertion元素,它包含所有重要数据。用户 NameID 取决于身份提供商配置、发出此响应的条件和 SAML 属性。 如果这对您有帮助,请告诉我。
有人可以帮助我通过真实的例子来理解 IAM 中以下实体之间的区别吗? 国内流离失所者 权威来源 单点登录 SAML 开放认证 谢谢