.NET Core Windows身份验证和OAuth2

时间:2019-07-19 10:29:03

标签: .net asp.net-core oauth-2.0 windows-authentication

我正在设计一个REST Web服务,它将允许客户端使用用户名/密码和Windows身份验证进行身份验证。选择是.NET Core 2.x,因此我们可以在Windows(Server 2008R2至2016)和Linux上进行部署。

流量:

  • 客户端将使用凭据或Windows身份验证向Web API身份验证服务进行身份验证
  • Web API身份验证服务使用Active Directory验证Windows凭据,并使用标准凭据查找内部数据库
  • Web API身份验证服务生成令牌和刷新令牌(OAuth2),以便客户端可以将令牌用于任何GET / POST请求

据我了解,主要节点是Windows身份验证和OAuth2: -Web API似乎已开箱即用地支持Windows身份验证,但这不是我想要的:REST请求应使用令牌处理,只有登录请求才应验证有效凭据

  • 即使Windows AD声称它是真实用户,我也会将用户名(DOMAIN \ user)存储在数据库中。有什么意见/建议吗?
  • 开箱即用似乎不支持
  • OAuth2。选项?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的情况,我确定Windows上的OAuth2身份验证更多是本地Windows身份验证,因为您想将Windows Active Directory与域信息一起使用。

您必须在加入该域的Active Directory域中配置Windows Server,并且该Windows Server必须配置了ADFS。建议至少使用Windows Server 2016作为提供ADFS的最低版本,因为Windows Server 2016作为身份验证的一部分完全支持OAuth2和OpenIDConnect(OIDC)。

此ADFS设置非常重要,因为为您的Web API使用OAuth2 / OIDC意味着建议您使用“代码授予”身份验证,因此,在用户访问Web API之前,您必须提供OAuth同意登录屏幕。 / p>

有关更多信息,请参见以下文章:

  1. MSDN article on ADFS on Windows Server
  2. OpenID Connect in Windows Server 2016 using ADFS

我强烈建议至少使用Windows Server2016。因为它具有ADFS 4.0以完全支持流行的授予(代码授予,代码ID令牌授予,隐式,资源所有者),并且还具有nativeclient(桌面)的完全支持客户端),Web API和守护程序服务。