如何解决通过用户名和密码在.Net Core中进行ADFS 4身份验证
我正在使用.net核心API应用程序,有角度的前端仅向我发送用户的用户名和密码(从登录页面获取)。 我的API应用程序必须基于客户Intranet请求对ADFS 4服务的身份验证。
问题是:如何调用发送用户名和密码的ADFS 4 API来验证用户身份?如果您有任何样品,那就太好了!
此ADFS调用的目的仅仅是查看用户是否被授权使用该应用程序,Web应用程序使用其自己的jwt令牌来授权操作。
感谢所有人
解决方法
首先,您必须知道以下事实:使用REST Web API访问ADFS 4最好是在OAuth2之上使用OpenIDConnect实现的,因为通过ADFS 4进行Web API身份验证需要OAuth2进行授权。
OAuth2和OpenIDConnect(通常称为OIDConnect)是已知的标准,尽管这些标准不需要JWT作为授权令牌的一部分。 由于ADFS 3使用OFS2并要求使用JWT令牌,所以ADFS,因此您已经更正了使用JWT作为令牌的问题。
从ADFS 3开始的ADFS完全支持OAuth2 / OIDC,其中包括隐式授予,代码令牌以及要实现的具有用户名和密码的授予类型。
作为身份验证的一部分传递用户名和密码的授予类型称为“资源所有者凭证”。不建议这样做,因为从本质上讲,代码授予和隐式授予的安全性较低。
如果要使用用户名和密码进行身份验证,则必须了解这意味着您不能对Web API使用建议的身份验证/授权。将代码授予类型用于Web API是常见的最佳实践。
请参考ADFS针对开发人员的以下官方文档: https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-openid-connect-oauth-flows-scenarios
更新1:
您正在询问要在控制器中放入什么。不可以,您不能将OAuth的身份验证和授权放入控制器中。
是的,您应该使用[Authorize]
属性标记控制器,但这只会标记您的控制器类要求Web API必须具有授权。 OAuth的真正授权代码始终在ConfigureServices方法内的Startup.cs中设置。
有关更多示例,请查看Microsoft的ASP.NET Core中的MS Identity此代码示例: https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。