我过去曾使用Owin在我的Mvc Web Api项目中创建一个令牌端点,以提供oauth 2.0令牌" Resource Owner Password Credentials" grant type ,其中访问令牌提供程序将检查数据库用户表以验证移动客户端提供的凭据的有效性(使用Visual Studio工具为Cordova开发的多平台应用程序)。
在此项目中,Web Api将由 Active Directory Windows域帐户
使用的多平台移动应用程序使用我想使用Owin Oauth 2.0向这些用户授予访问令牌,但我不知道如何检查这些凭据的有效性。
我想的是将/token
端点放在"basic authentication"
后面,并在访问令牌提供程序的代码中从Identity获取用户,在使用经过身份验证的情况下,应自动创建通过Asp.net管道。
它能起作用吗?
您是否知道将Oauth 2.0用于AD Windows帐户有什么好主意?
注意:
我还在调查Active Directory是否能够自己提供Oauth 2.0端点。
答案 0 :(得分:9)
以下是如何使用Active Directory联合身份验证服务获取OAuth2令牌的相当不错的演练。 https://technet.microsoft.com/en-us/library/dn633593.aspx。 您必须按照底部的所有链接来完成整个演练。
请注意,它指的是使用Windows Azure AD Authentication Library for .NET。但根据该文档,该库用于Azure Active Directory和内部Active Directory。
对于工作流程,一旦通过身份验证,您将能够获取并向WebAPI提供持有者令牌。然后,您的WebAPI“验证令牌的签名以确保它是由AD FS发出的,检查令牌是否仍然有效且未过期,并且还可能验证令牌中的其他声明。此时,客户端被授权,他们要求的信息在回复中发送,或者他们是未经授权的,不会发送任何数据。“ - https://technet.microsoft.com/en-us/library/dn633593.aspx
答案 1 :(得分:8)
您可以在AD之上使用ADFS 3.0,它将为您提供OAuth 2.0授权服务器功能:http://blog.scottlogic.com/2015/03/09/OAUTH2-Authentication-with-ADFS-3.0.html
将令牌端点放在"基本身份验证"对您没有帮助,因为您要在令牌端点上验证客户端,而不是用户。您可以将授权端点置于"基本身份验证"虽然。