安全断言标记语言(SAML)是一种标准,用于根据用户在另一个上下文中的会话将用户登录到应用程序中。
SAML 和 WS-Fed 联合协议有什么区别? SAML (Security Assertion Markup Language) 和 WS-Fed (Web Services Federation) 都是用于实现单一服务的协议...
我正在尝试将 Google SAML SSO 合并到我的 Web 应用程序中,但我无法找到解释如何执行此操作的资源或示例。 我已经关注了谷歌关于 SAML SSO 的文档......
如何在 .Net Core 应用程序中从 ADFS 获取 saml 令牌
我有一个 .Net 核心微服务。我需要与其他服务交谈以获取数据。但是其他服务支持 SAML 身份验证,他们提供 urls(依赖方,adfs),凭据,证书...
Rails OAuth 2.0 系统基于 SAML 的身份验证中的会话丢失和空“user_redirect_to”变量
我正在开发基于 OAuth 2.0 on Rails 的身份验证系统。 我使用 Devise gem 来处理用户会话和登录,使用 Doorkeeper gem 来管理 OAuth 2.0 工作流程。除了用户...
将 windows (kerberos) 身份验证转换为 SAML 并更改用户名
我们有一个带有 SAML 身份验证的基于 Web 的云应用程序。 Azure Active Directory 充当 SAML 身份提供者。我们希望我们公司网络中的某些用户已经是真实的......
Azure Enterprise 应用程序 SAML SSO,用于现有 Web 应用程序中的附加访问 url
我们正在使用 azure AD 的 Azure Enterprise 应用程序,该应用程序配置了 SAML SSO 以访问在单独租户中构建的 Web 应用程序。 如果我们想为移动访问添加额外的访问 url, 我...
如何在 requirements.txt 中的包自动安装到 Heroku build 之前运行 pip install package?
我有一个 Python Django 项目,其中主分支自动部署到 Heroku。根据构建日志; 首先,使用构建包,然后安装依赖项,在此包之后...
最近我遇到了单点登录功能的问题,客户需要在他们的“应用程序生态系统”上使用它。 我有“身份提供者”和“服务提供者”
了解在 SSO 架构中是否可以实现多信任是很有趣的,例如基于 ADFS。 我的意思是以下。 假设我有 ADFS_0 和 ADFS_1(实际上我有 IdentityServe ...
如何在 Rust 中从 Google 身份验证获取 SAML 断言?
我已将我的 AWS IAM 作为身份提供商连接到 Google,一切都按预期工作。现在我想编写一个 Rust 客户端/桌面应用程序,它可以通过 Google 对用户进行身份验证,并检索 ...
如何使用 OKTA 作为身份提供者在普通的 ASP.NET 4.5 应用程序中实现 SSO
我有一个普通的 ASP.net 应用程序。我需要在登录屏幕中启用 SSO。我的身份提供者是 OKTA。我们已经从 OKTA 获得了元数据文件,但我不确定如何在我们的
Keycloak 用户和 AWS 管理的 Grafana 之间的身份验证问题
我已经在 AWS 控制台中安装了 AWS 管理的 Grafana。我已经在带有私有子网的小型 EC2 中安装了 keyclaok(允许安全组入站和出站所有端口)并配置了 Keycloak 的 Re...
Keycloak 用户与 AWS 管理的 Grafana 之间的身份验证问题
我已经在 AWS 控制台中安装了 AWS 管理的 Grafana。我已经在带有私有子网的小型 EC2 中安装了 keyclaok(允许安全组入站和出站所有端口)并配置了 Keycloak 的 Re...
我们正在将我们的应用程序从传统的数据库登录转移到 keycloak。旧系统使用 python-saml 包自行处理 SAML 登录。 现在,我们正试图让 keycloak 做...
如何从我的 Python-Django 项目中获取元数据以实现 SSO?
我有一个 Python-Django 项目,我正在尝试使用他们的 idp 与 C#/.NET 现有网站 SAML 身份验证集成。 我绝对需要生成一个元数据文件给任何人......
我们可以在 ASP.NET MVC 中使用多种身份验证方法吗
我正在做一个 ASP.NET MVC 项目,我们已经实现了用户名/密码身份验证。我们正在尝试向项目添加 SAML 身份验证 (Azure AD)。那可能吗?这些可以...
我们可以在.net framework MVC中使用多种身份验证方法吗
我正在做一个 ASP.NET Framework 项目,我们已经实现了用户名/密码身份验证。我们正在尝试向项目添加 SAML 身份验证 (Azure AD)。那可能吗?不能...
我有一个 MERN 堆栈 SPA 应用程序,其后端为 ExpressJS,前端为 ReactJS。我正在尝试使用来自大学 SAML 身份提供商的 SAML 身份验证。我有一个快速 API
任何人都可以建议以下是否是将 SignedInfo 元素传递给某些代码以对 xml 消息进行数字签名的正确格式? 任何人都可以建议以下是否是将 SignedInfo 元素传递给某些代码以对 xml 消息进行数字签名的正确格式? <ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></ds:CanonicalizationMethod> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod> <ds:Reference URI="#pfxffef2099-cc79-fd84-e7e8-5bdced364715"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></ds:Transform> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>LC/2Thrnfl3SUqWp8LXfZFyXoZA=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> 下面的 python 代码应该完成这项工作吗? from cryptography.hazmat.primitives.asymmetric import utils from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes with open("mysaml_pr_key.pem", "rb") as key_file: private_key = serialization.load_pem_private_key( key_file.read(), password=None, backend=default_backend() ) mypadding_for_signature=padding.PSS( mgf=padding.MGF1(hashes.SHA1()), salt_length=padding.PSS.MAX_LENGTH ) hasher2 = hashes.Hash(hashes.SHA1()) hasher2.update(to_be_signed.encode()) digest_of_signed_info=hasher2.finalize() signature_before_64encode=private_key.sign(digest_of_signed_info,mypadding_for_signature,utils.prehashed(hashes.SHA1())) signature=base64.b64encode(signature_before_64encode) 响应被SP拒绝,原因是“未能验证签名”。 根据 SP 的文档,我确实上传了 IDP 证书和签署它的 CA,它们应该用于签名验证。此外,我确实尝试在第三方工具中验证签名并返回相同的响应(签名验证失败。).. 我预计是以下两个原因之一导致失败: XML 元素的语法或规范化<SignedInfo> 是错误的。根据我的理解,签名是 <SignedInfo> 元素的 SHA1 摘要签名的产生。请注意,<DigestValue> 是 XML 节点的散列,其 ID 在 <reference> 元素中给出。我确认我的哈希值与第三方工具(在线 SAML 工具)生成的哈希值相同 也许我用来对元素进行签名的python代码是错误的。我需要使用 SHA1 然后使用我的私钥签名 W3C XML签名规范中使用的RSA算法是指RFC 3447中描述的RSASSA-PKCS1-v1_5算法。使用的填充方法是 PKCS#1 v1.5。您的 python 代码使用 PSS 填充 终于成功了: 最终的 signedinfo 元素是: <ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod> <ds:Reference URI="#pfxffef2099-cc79-fd84-e7e8-5bdced364715"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>YeKgITtMiXZjSnfQ1I+byM6aOoQ=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> 我认为问题是提到了错误的规范化方法。 唱歌的密码是: with open("mysaml_pr_key.pem", "rb") as key_file: private_key = serialization.load_pem_private_key( key_file.read(), password=None, backend=default_backend() ) signature_before_64encode = private_key.sign(to_be_signed,padding.PKCS1v15(),hashes.SHA1()) signature=base64.b64encode(signature_before_64encode) 其中 to_be_signed 是 singedinfo 字符串的 .encode() 结果。
【keycloak saml 身份验证】重定向 idp 提供商时无需输入密码
我开发了带有 keycloak saml 身份验证的示例应用程序。 在开发过程中,我了解到当我访问应用程序时,会生成 saml 请求并重定向 keycloak 控制台登录菜单。 经过...