问题标签 [federated-identity]

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 回答
1960 浏览

azure - 如何在 Win azure 应用程序中使用联合身份验证获取当前登录用户的电子邮件 ID 等信息

Windows azure 应用程序接受联合身份验证,用户可以使用任何 gmail、facebook 和 live id 登录。一旦用户登录,如何提取信息,例如获取用户名和电子邮件 ID。?

0 投票
2 回答
693 浏览

federated-identity - 如何为 Saml2SecurityTokenHandler 使用基于文件的配置?

使用 Saml2SecurityTokenHandler 验证来自内部提供商或 ACS 的 SAML2 不记名令牌。能够以编程方式配置处理程序以进行验证,但它似乎不想从我的配置文件中的 microsoft.IdentityModel 部分中获取配置。构造 SecurityTokenHandlerCollectionManager 似乎也没有命名配置部分的概念,所以我似乎无法使用 mySaml2SecurityTokenHandler .Configuration - mySecurityTokenHandlerCollectionManager["NAME"].Configuration。

有没有一个很好的例子可以在某处进行设置?

0 投票
1 回答
281 浏览

wif - WIF 入口点,联合身份验证

在 asp.net 应用程序中,是否可以只对少数页面 (.aspx) 进行 WIF 保护,而其他页面保持不变?

基本上,我想要的是当用户登陆时,他们可以浏览并HomePage.aspx能够转到- 但是当他们尝试访问时,我希望启动 WIF 设置。如果用户已经登录,那就太好了- 否则我们会将用户重定向到 STS 页面,他们可以在其中获得身份验证。PageOption.aspxPageAbout.aspxPageAccount.aspx

现在,我所有的页面都受 WIF 保护。因此,如果我尝试访问任何页面,我都会被重定向到 STS 页面。

我尝试修改 web.config 文件并将我想要 WIF 保护的页面放在一个单独的文件夹中,并提供其单独的 web.config,但到目前为止没有运气。

此外,如果我尝试<authentication mode..在嵌套的 web.config 中设置,我会收到错误消息。为什么我也不能这样做?

我得到的错误是(在第 15 行):

解析器错误消息:使用注册为 allowDefinition='MachineToApplication' 的部分超出应用程序级别是错误的。此错误可能是由未在 IIS 中配置为应用程序的虚拟目录引起的。

源错误:第 15 行:

只是为了更进一步,我正在尝试做的是允许表单身份验证PageOption.aspxPageAbout.aspx当用户尝试直接转到PageAccount.aspx我想要然后使用联合身份验证时。

那里有任何安全专家可以对此有所了解吗?

0 投票
0 回答
434 浏览

wcf - 在使用共享会话使 WCF 服务调用多个浏览器之前验证是否存在有效会话令牌

使用 WIF,Silverlight 客户端中的 WCF 访问后端 WCF 服务。应用程序注销使用联合身份验证模块 SignOut 方法,该方法又调用会话身份验证模块 (SAM) DeleteSessionTokenCookie 以进行本地 RP(依赖方)注销。随后调用 IP(发行方)的注销。所有这些功能都符合预期。

我遇到了以下与共享会话相关的多浏览器场景,导致“远程服务器返回未找到错误”问题。如果使用 IE 的“新会话”,这不是问题。

脚步:

  1. 使用 IE 快捷方式打开浏览器实例 1、导航到应用程序并登录。
  2. 使用 IE 快捷方式打开浏览器实例 2,导航到应用程序并登录。
  3. 在浏览器实例 2 中注销应用程序。
  4. 执行任何需要与服务器通信的操作。例如,注销应用程序浏览器实例 1。

结果:“远程服务器返回错误未找到”异常

是否可以在浏览器实例 1 中进行 WCF 调用之前检测到 WIF 令牌已被删除,从而通知用户。IdentityModelServiceAuthorizationManager.CheckAccessCore (OperationContext) 方法用于在进行任何 WCF 服务调用之前验证服务访问(授权)。此时是否可以访问和评估会话令牌相关信息?或者还有其他可以使用的方法吗?

0 投票
2 回答
4155 浏览

azure - 自定义 STS 和 Azure ACS 错误 ACS50008:无效的 SAML 令牌

我有一个自定义 STS 实现。目前,它被配置为 Azure ACS 上的附加身份提供程序。我有一个通过 ACS(Windows Live、Google 等)成功进行身份验证的依赖方网站。但是,每当我尝试使用自定义 STS 登录时,总是会收到错误 401。

  • 错误代码 ACS20001:处理 WS-Federation 登录响应时出错。
  • 错误代码 ACS50008:SAML 令牌无效。

我已经搜索了论坛,但在我的情况下,我没有得到有关错误的更多详细信息,也不知道如何继续和解决这个问题。

我的 STS 目前处于测试阶段,可以在此处访问:元数据

如果有人有任何建议或想尝试一下,请通过电子邮件与我联系,我将在我的自定义提供商上打开一个演示登录。

注意:该案例与此处发现的类似问题不同,因为我的内部异常详细信息没有提出任何理由。

更新:查看此线程中的讨论以获取一些额外的信息以及我从提琴手中提取的有效负载。

提前致谢,

康斯坦丁诺斯

0 投票
1 回答
474 浏览

azure - 如果我有自定义 STS,是否需要联合身份验证?如果是这样,为什么?

如果我有一个自定义安全令牌服务,它专门列出了允许的受众并检查令牌是否来自这些受众之一,并检查 X509 证书的指纹和颁发者,我是否需要 WSFederation?

由于我的 STS 正在检查令牌是否已经来自特定应用程序并通过我的 ACS 进行路由,所以我不是在验证我需要做的所有事情吗?我知道应用程序 A 向 ACS 发送了一个请求,ACS 向应用程序 B 发送了一个请求,所有这些请求都来自自定义 STS,那么联邦身份在这张图片中的位置是什么?

为清楚起见进行编辑:

对不起,我在原始帖子中有点不清楚。我认为混乱是因为我使用了 STS 而不是安全令牌处理程序(方式不同,只是一个错字)。应用程序 A 是一个自定义登录服务,它显示用户的登录选项,google/facebook/yahoo/etc。通过这些服务登录从 ACS 获取令牌并将其返回给应用程序 B,即依赖方。此 RP 有一个自定义安全令牌处理程序,它接受令牌并验证它是否具有与应用程序 A 匹配的受众 URI。它还验证颁发者是 ACS 并且指纹与用于通过ACS。

这意味着理论上应用程序 B 知道,应用程序 A 用于登录(因为它来自该 AudienceURI)并且 ACS 发送了令牌(因为它是颁发者并且指纹匹配)。我要问的是应用程序 B 是否需要联合身份?如果您已经证明了令牌的来源,那么使用它究竟能得到什么?

0 投票
1 回答
335 浏览

javascript - 保护 HTTP API - 没有用户密码提示并避免暴露私钥

我正在研究通过 HTTP 公开的 API,这些 API 将被合作伙伴公司使用并部署到他们的众多客户中。

在某些情况下,客户端将基于浏览器。这是我的主要关注点,但我可能会在客户端是 Windows 应用程序的情况下应用相同的模式。我觉得当客户端是 Windows 应用程序而不是基于浏览器的应用程序时,在客户端上保护私钥的范围更大。因此,发生的通信是从合作伙伴应用程序呈现的浏览器页面到我们托管 API 的服务器。

底线是我们不能提示最终用户输入凭据,并且必须依赖将随每个请求传递的存储的密码/密钥/令牌。我担心的是我想阻止合作伙伴公司将此令牌烘焙到客户端代码中。以下是该场景的高级描述。

  1. 合作伙伴在我们这里建立一个帐户(手动过程),执行必要的开发工作以在他们的产品中使用 API,然后将其推广给他们的客户。
  2. 然后,客户运行产品并通过向导在我们这里建立帐户。此时我们可以提示他们输入用户名和密码,但以后对 API 的所有请求都不应提示实际的最终用户输入凭据。
  3. 然后,他们执行无数业务流程,在许多不同用户环境下的许多工作站上调用我们的 API。我们不关心个人用户信息。

出于这个问题的目的,我将跳过第 1 步并专注于第 2 步和第 3 步。

我目前正在努力保护这个 API,并提出了以下设计:

  • HTTPS 无处不在(所有请求都使用 SSL/TLS)
  • 所有 POST 请求都使用 CSRF 令牌
  • 在第 2 步中,当客户创建帐户时,我们会向他们提供客户身份验证代码。合作伙伴应对其应用程序进行编码,以将此身份验证代码存储在服务器上。
  • 在将来调用我们的 API 之前,它们会在我们的 javascript 库上调用一个 Init 函数并提供一个回调,例如“GetAuthToken”。
  • 每次调用我们的 API 时,我们都会检查是否有 Auth Token(在服务器上),如果没有,我们会返回错误并调用回调。
  • 实施回调时,合作伙伴应使用 HTTPS 调用其服务器以检索令牌。这个请求将受到他们的正常身份验证,因此假设如果用户在他们的系统中经过身份验证,那么他们可以检索 Auth Token。
  • 我们收到 Auth Token,调用我们的服务器来验证它,然后设置一个包含该令牌的 HTTPOnly cookie。
  • 当 cookie 过期时,我们再次调用 GetAuthToken 回调。
  • 使用 postMessage 管理跨域问题
  • 我们可以使 Auth Token 可撤销

我们在这里有一种联合安全形式,如果用户通过合作伙伴的身份验证,那么我们假设他们可以访问我们的 API。我能想到的避免将私钥/身份验证令牌烘焙到客户端代码中的唯一方法是这种回调机制。

我是不是太复杂了?还有其他更简单的方法吗?我意识到,如果任何一个站点都对 XSS 开放或受到恶意软件的破坏,所有的赌注都没有了,但至少通过不将私钥呈现为 javascript 或标记,用户无法右键单击查看源代码并告诉所有人私钥。

编辑:找到这个问题。最佳答案描述了与我所描述的内容类似的内容,尽管提到了我不想强迫合作伙伴实施的 WIF(他们甚至可能没有运行 Windows)。不过,仍然希望对我的方法提供反馈...

Web 应用程序 - 跨域用户身份验证

0 投票
1 回答
324 浏览

security - 联合/SSO 技术

我想知道跨一组公共网站实施联合的技术。简单的答案是“联邦”或“saml”。但是,在实践中,我可以看到很多技术问题:创建帐户链接(以便站点 1 中的用户“SteveRoy”链接到站点 2 中的“SRoy”),更改登录页面以引用中央 IdP,处理不拥有跨所有站点的帐户,处理跨站点的会话注销等。简而言之,“saml”似乎是对一个更复杂的问题的过度简化。很想听听那些在这个领域取得成功的人的细节......

0 投票
0 回答
211 浏览

single-sign-on - 谷歌单点登录解决方案

Google 有一个时髦的解决方案,可以在其所有站点上提供 SSO。它似乎可以很好地管理多个帐户,允许帐户链接,允许用户在尝试访问服务时从多个帐户中进行选择等。

是否有任何关于 Google 提供此 SSO 解决方案的信息?

另外,我查看了他们的登录页面,想知道是否有人知道登录屏幕上 URL 中使用的各种参数的用途?

0 投票
1 回答
659 浏览

asp.net - 使用 Microsoft Azure 构建身份管理系统

我正在寻找使用 Microsoft azure 和 .net 构建具有基于角色的访问控制的身份管理系统。

我只是想知道是否有人可以提供一些关于它的指示。我想设置身份验证,并根据用户角色(例如管理员)进行访问控制。

任何帮助,将不胜感激。