问题标签 [adfs4.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.

0 投票
0 回答
474 浏览

angular - 通过 Oauth2 在 ADFS 4.0 上进行 SpringBoot 和 Angular 6 身份验证

我正在尝试为在客户端具有 Angular 层和在服务器上具有 SpringBoot 的 Web 应用程序设计身份验证模式。此类 Web 应用程序的用户驻留在组织的网络中,登录到他们的 PC,并且应该使用 Web 应用程序,而无需通过另一个请求凭据的页面登录。

我一直在研究各种机制,但更遵循客户端基础设施的是Oauth2.0 框架RFC的授权代码授予。客户端实际上有一个 ADFS4.0 服务器,它将用作授权服务器并使用 JWT 进行回复。上述流程在第 4.1 节中进行了描述,而其他流程也可能对其他情况有用。

流程很清楚,但我无法理解一个(表面上)简单的事实:授权服务器如何识别用户?在这两个请求中,都没有包含凭据的参数,而假定他们最后获得的 access_token 将包含声明(用户名、组、角色等)。在这种情况下,我更愿意继续这样做,但是,在第 4.4 节中,我们有另一种流类型解释了用户插入凭据的位置。尽管如此,要求用户不要重新插入任何凭据。

我试图发现的一种方法是从用户代理(客户端的浏览器)从其工作机器(Windows 身份验证集成)中恢复用户详细信息。但它似乎需要在代理上进行配置,而不是对最终用户直接进行配置。众所周知,组织域使用 Kerberos 向其网络中的用户授予访问权限,但我看不出该组件是否适合该组件。

所以,最后的问题是:如何使用他们进入机器的配置文件执行自动身份验证(对用户隐藏)?授权代码授予是否以某种方式隐含地满足此要求?另外,您是否建议直接在 Angular 中处理所有重定向序列,还是利用 SpringSecurity 与 OAuth 的集成更好?

0 投票
0 回答
506 浏览

authentication - .Net Core Web API 不记名令牌身份验证与 ADFS 4

我正在将一个简单的 Web 应用程序和关联的 Web API 转换为使用从 .Net Framework 4.6.2 到 .Net Core 2.0 的开放 ID 使用本地 ADFS 保护的,但在 Web API 中遇到身份验证问题。

我已成功将前端 Web 应用程序转换为 .Net Core,并且它调用旧 API 没有任何问题。但是我不确定如何为承载身份验证配置新的 API。

现有 API 中的身份验证配置如下:

我试图在新的 API 中配置身份验证,如下所示:

调用旧 API 时,不记名令牌被成功解析并被授予访问权限,没有任何问题。但是,在调用新 API 时,我只是收到 401 错误。如果我[Authorize]从 API 控制器中删除该属性,则请求成功,但没有与请求关联的用户,尽管我可以在授权标头中看到不记名令牌。知道我错过了什么吗?

编辑

我现在已经连接到 JwtBearer 事件,所以我可以看到出了什么问题,结果证明我的配置中有几个错误,它无法验证我的令牌的受众和发行者。将代码更新到以下解决了该问题。

现在,当我调用 API 时,我可以看到OnTokenValidated正在引发事件并且用户主体正确且经过身份验证,但是在调用 API 时我仍然收到 401 未经授权的错误。如果我[Authorize]从 API 中删除该属性,它可以工作,但没有用户主体。

0 投票
1 回答
119 浏览

adfs - ADFS - 获取用户信息

我需要使用 Office 365 中的插件(excel、word、powerpoint)对自己进行身份验证。客户有一个本地 ADFS,他想用它来验证用户身份。因此,我想在本地 ADFS 上对自己进行身份验证,检索令牌和用户信息,然后使用 AddIn 和 Azure Rights 管理 (RMS)。必须自动完成对 ADFS 的身份验证,无需输入登录名和密码。

0 投票
1 回答
563 浏览

c# - ADFS 自定义身份验证提供程序元数据不匹配

我为ADFSMFA 创建了一个自定义身份验证器。我在元数据中定义了身份验证方法:

我的 TryEndAuthentication 也定义为:

但我在 ADFS 日志中收到此错误:

0 投票
1 回答
1241 浏览

single-sign-on - ADFS 问题 - 自动登录不起作用

通过网络浏览器(IE 或 Chrome)使用 ADFS 登录应用程序时出现问题。我想在不输入这些标识符的情况下使用 ADFS SAML 自动且透明地登录用户(当前用户已登录)。

所以我有 2 台运行 Windows 2016 Server 的服务器:-第一个 Serv1:具有 Active Directory 目录的域控制器-第二个 Serv2:ADFS 服务器(4.0),它加入了控制器 Serv1

当我尝试访问我的应用程序时,遇到以下错误:

发生错误。有关详细信息,请联系您的管理员

活动 ID:00000000-0000-0000-d000-0080000000fa 依赖方:preprod.xxxxxxxxx.com - DMS 错误时间:星期一,2019 年 6 月 10 日 13:27:07 GMT Cookie:已启用用户代理字符串:Mozilla/5.0(Windows NT 10.0 ; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36

我们可以在 ADFS 服务器上的 ADFS 事件日志中看到以下内容:

在联合被动请求期间遇到错误。

附加数据

协议名称:Saml

依赖方: https ://preprod.xxxxxxxxx.com:443/auth/saml/metadata/alias/dms

异常详细信息:Microsoft.IdentityServer.AuthenticationFailedException:MSIS3111:AD FS 不支持非域用户。---> System.IdentityModel.Tokens.SecurityTokenValidationException:MSIS3111:AD FS 不支持非域用户。在 Microsoft.IdentityServer.Service.SecurityTokenService.MSISSecurityTokenService.BeginGetScope(IClaimsPrincipal principal, RequestSecurityToken request, AsyncCallback callback, Object state) 在 Microsoft.IdentityModel.SecurityTokenService. Microsoft.IdentityServer.Web.WSTrust 的 SecurityTokenService.BeginIssue(IClaimsPrincipal 主体,RequestSecurityToken 请求,AsyncCallback 回调,对象状态)。1& identityClaimSet, List1 个附加声明)在 Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.SubmitRequest(MSISRequestSecurityToken 请求,IList1& identityClaimCollection) --- End of inner exception stack trace --- at Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.SubmitRequest(MSISRequestSecurityToken request, IList1& identityClaimCollection) 在 Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.RequestBearerToken(MSISRequestSecurityToken signInRequest, Uri& replyTo, IList`1& identityClaimCollection) 在 Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.RequestSingleSignOnToken(ProtocolContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken) 在Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSecurityToken(SamlSignInContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken)在微软。IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext context) 在 Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler) 在 Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)

System.IdentityModel.Tokens.SecurityTokenValidationException:MSIS3111:AD FS 不支持非域用户。在 Microsoft.IdentityServer.Service.LocalAccountStores.ActiveDirectory.ActiveDirectoryCpTrustStore.ProcessPrincipal(IClaimsPrincipal incomingPrincipal) 在 Microsoft.IdentityServer.Service.SecurityTokenService.MSISSecurityTokenService.BeginGetScope(IClaimsPrincipal principal, RequestSecurityToken request, AsyncCallback callback, Object state) 在 Microsoft.IdentityModel.SecurityTokenService。 Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken 请求,IList 上的 SecurityTokenService.BeginIssue(IClaimsPrincipal 主体,RequestSecurityToken 请求,AsyncCallback 回调,对象状态)1& identityClaimSet, List1 个附加声明)在 Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.SubmitRequest(MSISRequestSecurityToken 请求,IList`1& identityClaimCollection)

在另一台机器上,我有这个错误:

https://srv-adfs.ppppppppp.local/adfs/ls/wia?SAMLRequest=jZJBb4JAEIXv%2FRVk77CAaHQjGFtjamJTIthDb8OyIhV26c5i%2BvOLotFeTJO57GTmm5f3djr7qSvrKDSWSobEc1xiCclVXsoiJNt0aY%2FJLHqaItSV37B5a%2FZyI75bgcaaIwptur0XJbGthU6EPpZcbDfrkOyNaZBR2mjRaJU7SuW6PAqHq5oFwYBCR6InKk2SdwpVCUjzGom16NClBHPWc6WgPtrZobEh36GTAT%2B0TaFV2zjIeU1PXVohJdZSaS7OIkOygwoFsVaLkMA%2By3aDcTH0vvKxnweBPxZ8UnDu8WGWdTMYA2In77aF2IqVRAPShMR3vYntjmzPTb2AdeX7zmjgfRIr1soorqrnUvaWtVoyBVgik1ALZIazZP62Zr7jsqwfQvaaprEdvycpsT6u1vsn67swJLLe7Mes5nKYRH027KxY3xMeA%2BCaHon%2Bn1UtDORg4BbYlN6fjy7Pvz8l%2BgU%3D&RelayState=%7C%7Cbackup-webclient&SigAlg=http %3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=SxWuSQC3I77BXcfCxR%2Bicp1ES%2FgrQDZdx8W8XPxC51JRmNeVxfXI%2BDWgCV8bMrTl%2BYc8I6VZPJxDVPPzTQEZihQaXl0ib2Q268OiNwU1bN9pDL6EpuMM9nCxuEQEdtW58M%2F%2Bjs07j1Rp40VD8AVbvQrpv67AgXXdLWGrSSvZHPwrHLy8fhpSDmg57F8g1zD5%2BMpijrx%2F4n5e8MIK6fBUDPWfAaWCjXgHoo%2B7PFr%2Fp8w5MMa9ZPLDg7yQrMGSQ3on1UxpM091Uu85S%2ByI0aYDHmgZk%2BmGwBUblDWleenUwyAMjopZ3TJx4%2Feng2uBD8%2FbLfWUmbitMMMdsLbIOEb%2Bng%3D%3D&client-request-id=00000000-0000-0000-1201- 0080000000dc

HTTP 400 BadRequest 找不到网页

你对这个问题有什么想法吗?谢谢

0 投票
0 回答
167 浏览

oauth - ADFS 2016 在密码流中使用错误的 AUD 声明生成 ID_TOKEN

好吧,我的第一个问题是 ADFS 2016 不会在 JWT 令牌中生成 KID 标头,我需要它在我的身份提供程序(Spring Security)中进行身份验证。

我解决了这个问题,得到了 ADFS 生成的 ID_TOKEN,它具有我预期的 KID。但是使用 ID_TOKEN 我得到了错误的 AUD 声明。

AUD 声明应该是我的 ResourceServer的CLIENTID,但 ADFS 正在使用我自己的应用程序(客户端应用程序)的 CLIENTID 生成 AUD 内容,当我尝试调用我的 ResourceServer 时,我得到了拒绝访问,因为 AUD 声明是错误的。

有什么技巧可以解决这个问题吗?

0 投票
1 回答
475 浏览

spring-security - 需要帮助使用 React-native、Spring Rest Api 和 ADFS 4.0 实施 OpenID 连接/OAuth2 流

我真的很难理解我应该如何实现我的授权流程。我想我已经使用标题中列出的技术正确地实现了身份验证流程。这是我想要实现的目标:

基本上我有一个使用构建的移动应用程序React-Native,并且我已经为这个移动应用程序使用了一个宁静的 API。我目前正在使用ADFS 4.0. 我的移动应用程序直接使用ADFS端点对用户进行身份验证,并且我能够从那里正确接收 id_token 和访问令牌。但这里是我不知道下一步该做什么的部分。在我使用 openID 之前,我有自己的身份验证和一个 OAuth2 流Spring REST Api,每次我从移动应用程序向 API 发出请求时,我都会在标头中提供访问令牌,并使用它从授权服务器验证用户确实已经过身份验证,并且还收到了一些关于用户的重要信息,可以在我的 API 中使用。但是现在自从我使用OpenID-ConnectADFS 4.0对于身份验证,我在id_token. 问题是,我现在应该从移动应用程序发送到我的 API 究竟是什么id_tokenaccess token或者两者兼而有之?给定access token到 userinfo 端点的ADFS返回令牌所有者的主题。就像有什么方法可以让我使用主题接收用户信息或者我应该做什么。我已经尝试过很多次研究这个主题,但我仍然很困惑..

0 投票
1 回答
127 浏览

azure-active-directory - AD FS 2016 可以信任 Azure AD 颁发的 OAuth2 访问令牌吗?

是否可以将 AD FS 2016 配置为信任由 Azure AD 颁发的 OAuth2 访问令牌?如果 AD FS 2016 不能信任 Azure AD,那么它能否信任 Azure AD B2C 和/或 Azure AD B2B?

这将是这样的场景:

  1. 客户端获取 Azure AD 颁发的 OAuth2 访问令牌以调用 API-1。
  2. API-1 在代表流中从 AD FS 2016 请求 API-2 的新令牌。
  3. AD FS 2016 颁发新的访问令牌(因为它信任 Azure AD 颁发的令牌)。
  4. API-1 调用 API-2 发送由 AD FS 颁发的令牌。

我知道 AD FS 2016 可以配置为通过使用 SAML 创建声明提供者信任来信任联合合作伙伴组织,但我不知道的两件事是 1) 声明提供者信任是否与 OAuth2 访问令牌一起使用和 2) Azure AD 和 AD FS 之间的声明提供程序信任工作。

0 投票
0 回答
325 浏览

spring-security - Spring Security SAML Java 应用程序与 ADFS 4 集成的问题

我正在尝试借助 Spring Security SAML 扩展和 ADFS 4(IP) 将 SSO 集成到现有的基于 java/jsp 的应用程序 (SP) 中。在我从 SP 登录链接进入 ADFS SSO 页面并输入凭据后,应用程序无法验证 ADFS 响应并给出“HTTP 状态 401 - 身份验证失败:验证 SAML 消息时出错”错误。但是从日志中我可以看到断言已经成功解密并且正在打印属性。所以我无法理解为什么它会给出 Authentication Failed 错误。PL。帮助。我在下面提供日志数据。Java 应用程序托管在 Tomcat 服务器中。

20-08-2019 11:52:20,003 调试 org.apache.xml.security.signature.Reference:? - URI "#_530eaef7-3196-431c-bef8-36fc7c76ef27" 20-08-2019 11:52:20,003 DEBUG org.apache.xml.security.signature.Manifest: 验证成功 - 参考的类型为 20-08-2019 11:52:20,006 TRACE org.springframework.web.context.support.XmlWebApplicationContext:322 - 在根 WebApplicationContext 中发布事件:org.springframework.security.authentication.event.AuthenticationFailureServiceExceptionEvent[source= org.springframework.security.saml.SAMLAuthenticationToken@43b19eef:主体:空;凭证:[受保护];已认证:假;详细信息:空;未授予任何权限] 20-08-2019 11:52:20,006 调试 org.springframework.security.saml.SAMLProcessingFilter:346 - 身份验证请求失败:org.springframework.security.authentication。

0 投票
1 回答
1609 浏览

windows-server-2016 - ADFS farm when the primary instance is down, it doesn't automatically failover to the secondary instance

I have two instances (adfs1.xxx.com & adfs2.xxx.com) on a farm (sts.xxx.com) with WID (Windows Internal Database) setup, and am testing a failover situation.

Both are ADFS4.0 on Windows Server 2016.

When I stop the primary instance (adfs1.xxx.com), I expect the secondary instance to become the primary, and our client is able to continue accessing the login page (sts.xxx.com/adfs/ls/IdpInitiatedSignon.aspx).

However, it seems the failover does not happen automatically - the secondary instance still remains as a secondary and the login page (sts.xxx...) stops working.

Am I missing some configuration steps required to make it automatically failover when the primary instance is dead?