我正在为我的公司开发一个 Angular JS SPA,它使用不记名令牌来验证用户。使用 ASP MCV 作为后端,我设置了 OWIN 中间件来处理服务器上的不记名令牌。我的目的是为 Web 应用程序的用户生成不记名令牌,以锁定公开的 API。这里的复杂之处在于我需要根据 AD 用户的域\用户名生成不记名令牌,但要使不记名令牌工作,我无法启用 Windows 身份验证。登录不是一种选择,必须验证用户的 AD 凭据。
到目前为止,我已经设法实现: 在禁用 Windows 身份验证和启用匿名身份验证的情况下,我的 API 可以根据在标头中传递给它的不记名令牌来验证请求。为此,我创建了一个虚拟用户。
我需要实现的目标: 以“DOMAIN\Username”形式为用户获取 AD 用户名,以便我可以基于此创建不记名令牌。(到目前为止,我只能在启用 Windows 身份验证的情况下执行此操作)
我面临的问题是我无法启用 Windows 身份验证,否则当我将 [Authorize] 属性放在 API 上时,它将基于 Windows 身份验证进行验证,无论是否有有效的承载令牌。
您可能会认为我正在尝试做的事情毫无意义,因为我可以使用 Windows 身份验证,但我需要不记名令牌,以便只能从我的 SPA 调用 API 以确保安全。
到目前为止,我设法通过在启用了 Windows 身份验证的不同 Web 项目中创建 API 来获取用户 ID,但是,页面加载时间受到了影响,因此我想避免以这种方式获取用户 ID。