使用Passport.JS和ADFS对Express应用程序进行身份验证

时间:2020-06-30 01:43:33

标签: node.js passport.js adfs ws-federation

我正在尝试使用passport.js通过ADFS对Express应用进行身份验证。我正在使用password-wsfed-saml2 Passport.js策略,并且认为我应有尽有,但登录时遇到问题。

启动我的应用程序(http:// localhost:8011)将我重定向到ADFS登录页面。大。我输入我添加到广告中的用户的登录凭据,并收到错误消息。

Activity ID: 4fcc86b2-165d-4199-1d00-0080000000f3
Error details: Value cannot be null. Parameter name: g
Node name: f5c76cf3-a6a3-41c6-8584-37594f31107e
Error time: Tue, 30 Jun 2020 01:36:20 GMT
Cookie: enabled
User agent string: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36

ADFS服务器上的事件日志没有太大帮助...

Encountered error during federation passive request. 

Additional Data 

Protocol Name: 
wsfed 

Relying Party: 
 

Exception details: 
System.ArgumentNullException: Value cannot be null.
Parameter name: g
   at System.Guid..ctor(String g)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.GetContextFromWCtx(WSFederationContext federationPassiveContext, Boolean deleteCookie)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.GetOriginalRequestFromResponse(ProtocolContext context)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)

那么,我在做什么错?我该如何进一步调查以找出正在发生的事情?

我正在使用的配置是一台服务器,运行配置为DC的Windows Server 2019并运行ADFS。这是一个测试配置,可以证明我可以使用ADFS对应用进行身份验证。

2 个答案:

答案 0 :(得分:0)

最初检查您是否能够访问IDP发起的页面。 https://sts.contoso.com/adfs/ls/idpinitiatedsignon.htm

在各种情况下都会发生“由于被动请求而导致的错误”。

启用ADFS的管理和跟踪日志。跟踪日志是记录详细消息的位置,在进行故障排除时将是最有用的日志。默认情况下,它是禁用的,您可以同时启用两个日志,选中link以启用。

您还可以使用fiddler了解流程并进行故障排除。

答案 1 :(得分:0)

问题是因为我正在使用AzureGov。当我切换到Azure Commerical时,一切都按预期工作。