问题标签 [adfs2.0]
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.
single-sign-on - 如何在使用 WIF 的代码中获取 http 请求声明中的序列化?
ADFS 2.0、WIF (WS-Federation)、ASP.NET:web.config 中没有定义 http 模块或任何 IdentityFoundation 配置(如大多数 WIF SDK 示例所示),而是使用 WSFederationAuthenticationModule、ServiceConfiguration 手动通过程序代码完成和 SignInRequestMessage 类。我在代码中将 http 重定向到 ADFS,它似乎工作正常,返回声明并将用户重定向回我的网站,并在 http 请求中使用序列化声明。所以问题是如何使用 WIF 类、属性和方法解析这个请求并从中提取声明值?谢谢
ssl - ADFS 2.0。弄清楚每个 X.509 证书的目的和价值
我对所有这些安全功能都是新手,最近我被要求研究 ADFS 2.0。我发现 ADFS 使用以下类型的 X.509 证书与依赖方 (RP) 进行通信:
- 所有 RP 通用:1) 服务通信 2) 令牌签名 3) 令牌解密
- RP专用:4)加密证书
请帮助我找出在涉及所有 3 个部分的实际生产场景中哪个是真正重要和需要的:用户、服务提供商(我们公司)、IdP(ADFS)(在客户的服务器上)。
1) 我在 MS 帮助中发现的第一个证书:“这是联邦服务器用作 Internet 信息服务 (IIS) 中的 SSL 证书的相同证书”我不确定这是真的,因为我能够单独替换它们不会相互影响,因此它们肯定可以并行运行。所以不知道这个证书是干什么用的。
2) 第二个是用于签署已发行的令牌,以便 RP 能够确保令牌确实由受信任的 ADFS 发行,而不是被拦截,对吧?
3) 第三个可能是出于相反的目的:ADFS 确保消息确实来自受信任的 RP。
4)特定RP的加密证书有助于加密整个消息(令牌),因此即使您获得https公钥并拦截来自ADFS的消息,您也无法读取它没有其他应该只有RP知道的公钥,正确的?
如果我错了,请纠正我。
所有这些证书都是可选的,Micorosoft 没有说明其中的重要性,我在 WIF SDK 中唯一提到的就是说在现实生活中最好使用令牌加密证书。问题是我们为 ADFS-RP 通信建立了 HTTPS 协议(IIS 设置为在双方都使用 https)。安全通信还不够吗?我想知道:我们真的需要 2)、3) 甚至 4) 吗?
authentication - 使用外部身份验证提供程序的 ADFS 单点登录
我们正在建立一个 ADFS (2.0),它将负责对多个面向客户的系统的用户进行身份验证。身份验证机制外包给外部合作伙伴,该合作伙伴提供对多个身份验证提供程序的访问。
我们最近遇到了以下情况:
- 用户尝试访问面向客户的系统 A 并被重定向到 ADFS 进行身份验证。
- ADFS 将用户重定向到身份验证合作伙伴,在那里他成功进行身份验证。
- 用户将使用他的身份验证令牌发送回 ADFS。
- ADFS 将用户发送回系统 A。他现在与系统 A 建立了会话。
- 用户尝试访问尚未经过身份验证的系统 B,并被发送到 ADFS。
这就是 ADFS 偏离我们预期行为的地方。ADFS 不会识别用户并使用有效的身份验证令牌将他透明地发送回系统 B,而是将他发送给我们的身份验证合作伙伴以进行重新身份验证。
这完全破坏了我们希望为使用系统 A 和 B 的客户提供的 SSO 功能,但我们还没有找到一种方法让 ADFS 建立用户会话并在访问第二个系统期间重新使用它。
有没有人解决过这个问题?
ADFS 是否只能在完全负责身份验证时才提供单点登录?
c# - ADFS 2.0 httpcontext.current.user.identity.name 为空
我正在使用带有 .net 2.0 Web 应用程序的 ADFS 2.0 我试图在我的 Web 应用程序上获取 httpcontext.current.user.identity.name 但它是空的。我需要设置什么声明规则才能获得这个值?我已尝试转换传入声明传入声明类型:AD FS 1.x UPN 传出声明类型:名称 ID 传出名称 ID 格式:UPN
我也尝试发送 Ldap 属性作为声明属性存储:Active Directory
LDAP 属性传出声明类型 SAM-Account-Name SamAccountName Token-Groups- Unqailfied Names Group User-Principal-Name AD FS 1.x UPN
我的代码用于 ADFS 1.0 我将 fs url 更改为 adfs2.0 并且我开始看到这个问题。
ajax - 从 Javascript 调用 SAML IdP
我再次需要社区的明智建议!!!
我必须在我的 SSO 系统中集成几个 Web 应用程序。IdP 是 Active Directory 联合服务 (ADFS2),SP 是 Weblogic 托管服务器。我在 Web SSO 配置文件中为 SP 启动的用例使用 HTTP-POST 绑定。
这个设置是有效的,甚至我已经为 WLS 实现了 SLO,太棒了!但是,总有一个但是……我有一个应用程序可以供未经身份验证的用户访问,来宾用户。当用户通过身份验证时,他/她将看到不同的信息。
您认为实现这一点的最佳方法是什么?
我正在尝试通过XMLHttpRequest对 IdP 执行 JavaScript 调用,但它没有像我预期的那样工作......我的想法不是自己构建 SAMLRequest。也就是说,我不是直接调用 IdP,而是请求我的应用程序的安全资源。通过这种方式,Weblogic 就是向 IdP 发出请求(302 重定向)的方式。基本上我的想法是下一个:
在我的 web.xml 中声明一个安全约束:
调用安全资源(感谢 w3schools!):
安全资源的实现只是一个重定向到原始资源的servlet:
/li>
如果我们看一下请求流,它或多或少会起到作用:
- http://spHost/sample/helloXmlHttpRequest.jsp
- http://spHost/sample/secure/login?action=sample/hello.jsp
- HTTP/1.1 302 暂时移动 --> https://idpHost/adfs/ls/?SAMLRequest= ...
但最后我在xmlhttp.send()中得到一个错误:组件返回失败代码:0x80004005 (NS_ERROR_FAILURE)
此外,我正在尝试做一些讨厌的技巧,比如获取iframe、元素的内容,或者只是在脚本标签中调用安全资源:
最后一个“解决方案”的问题是我无法获取 HTML 代码。
有任何想法吗?也许 ADFS2 提供任何 REST 服务或类似的东西......
提前致谢,
路易斯
dynamics-crm-2011 - 是否可以修改 ADFS 以使用 NTLM 凭据(如果存在)对用户进行身份验证?
我们正在使用带有 ADFS 2.0 的 CRM 2011。我们的用户希望一个 url 可用于内部和外部用户,但是如果我们还想通过用户当前的 NTLM 凭据使用自动登录,则使用 CRM 2011 中的 IFD 配置是不可能的。是否可以修改 ADFS 登录页面以检测 NTLM 凭据是否存在并且来自正确的域,如果存在则自动登录用户并将其重定向回具有正确 ADFS 令牌的应用程序?
是否有足够的 API 表面积和正确的类型让我们以这种方式修改登录页面,或者票务 API 是否关闭到我们无法以编程方式执行此操作的程度?
评论:我们知道使用 UAG SP1,我们可以强制使用 NTLM 凭据登录到 ADFS,但我们的客户不打算很快部署 UAG。
c# - Finding the assemblies required to develop ADFS custom claim transformation modules?
I want to build a custom claim transformation module as per this link. Step 1 and 2 in that article: add references to the System.Web.Security.SingleSignOn.ClaimTransforms.dll
and System.Web.Security.SingleSignOn.Authorization.dll
assemblies.
I am unable to find these assemblies. I installed WIF and the WIF sdk on my Windows 7 laptop. After that, as per this discussion, I installed ADFS on a Windows 2008 R2 server. However, I could not find the assemblies there either, even when browsing the GAC from a command prompt.
Can somebody please point me in the right direction to locate these assemblies? There does not appear to be an ADFS sdk.
asp.net-mvc - ADFS - Windows 身份验证
我们注意到,对于我们的 ASP.NET MVC 应用程序中的每个资源请求,Windows 身份验证需要多次往返。我们相信,通过在每个请求中传递一个 cookie,我们可以将其减少到每个资源一次往返。据我所知,以下应该是可能的:
1) 用户导航到http://server/app
2) http://server/app没有找到 cookie 并重定向到http://authserver/authapp
3) http://authserver/authapp识别windows用户和对http://server/app的声明请求
4) http://authserver/authapp发出一个带有声明的 cookie 并重定向到http://server/app
可能吗?
c# - 与 ADFS 2.0 联合时如何正确设置超时
我使用 ADFS 2.0 已经有一段时间了,我了解它是如何工作的。我已经完成了十几个自定义 RP、自定义 STS 以及使用 ADFS 作为依赖 STS。
但是,我有一个简单的要求,但我仍然无法满足。
我希望我的用户在一段时间后被迫重新登录。假设 1 分钟,用于测试目的。
首先,我在 RP 方面做了一些更正。似乎出于未知原因,即使令牌的validTo
时间点回到过去,RP 也会保留会话。这与 Vittorio Bertocci 在他的书(第 123 页)中所说的相矛盾,他在书中展示了如何执行滑动过期 - 他说“SessionAuthenticationModule 将在之后立即处理过期的会话”。好吧,对我来说不是,但是我在这里找到了一个技巧http://blogs.planbsoftware.co.nz/?p=521 - 看看“if”子句:
这个技巧解决了 RP 方面的问题。当令牌无效时,应用程序将其清除并重定向到登录页面。
现在问题来了。我的登录页面使用FederatedPassiveSignIn
控件。单击时,它将浏览器重定向到 ADFS。
但是 ADFS 很高兴地创建了一个新会话,而没有任何提示给用户。
我已将此 RP 的令牌生命周期设置为 1:
并使用Get-ADFSRelyingPartyTrust
我可以看到它设置为 1(我什至validTo
在我的页面上打印令牌以确认设置正确)。
然后我设置 ADFS 属性ADFS-SetProperties
:
但仍然没有运气。我现在被困住了。
该方案适用于我的自定义 STS,其中 STS 会话的有效性基于表单 cookie - 如果我将 STS 的表单 cookie 超时设置为 1,则在我的 RP 应用程序中不活动 1 分钟后,我将被重定向到登录页面我的 RP 然后重定向到显示其登录页面的 STS。
但是,ADFS 2.0 并非如此。一分钟不活动后,我被重定向到我的 RP 的登录页面,该页面重定向到 ADFS 的登录页面,该页面又愉快地重定向回来,就像会话在 ADFS 中仍然处于活动状态一样。
我希望有人:
(1) 查看顶部描述的 hack 并解释为什么过期的令牌不会被自动拒绝并且需要这种丑陋的 hack
(2) 解释如何在 ADFS 2.0 端正确地使会话超时,以便更新令牌的请求受到登录页面的保护。
提前致谢。
编辑
我可以确认将上述所有参数设置为 1 分钟会使 ADFS 会话在 5 分钟(或更长时间)后失效。这很奇怪,似乎我犯了一个基本错误,或者 5 分钟是可接受的最小值。
我上面的(2)现在只是为了确认和解释我的观察。
login - 使用 SAML 的透明 SSO(IE、SAML 2.0、ADFS、Kerberos 身份验证)
配置为:作为 IdP 的 ADFS 2.0(支持 WS-Federation 和 SAML 2.0),作为服务提供者的 ASP.NET 应用程序。当 SPS 使用 WS-Federation 标准(使用 WIF)请求 ADFS 时,它允许我自动登录到 ADFS,即使新会话启动,也不会出现登录弹出窗口,因此 Kerberos 令牌可以按预期完成工作。但是,对于 SAML 2.0(使用 ComponentSpace.SAML.2 库),每次我打开 IE9 并被重定向到 ADFS 时,都会要求我在标准的小型弹出式登录窗口中输入我的 windows 域凭据。是否有任何 SAML 2.0 参数或其他技术让我像在 WS-Fed 案例中一样摆脱这个窗口?谢谢