我目前的任务是编写一个RESTful API,我们将发布给我们的客户。我计划将Web API 2与OWIN中间件一起使用。将要访问此应用程序的应用程序的范围可以从没有其他用户身份验证的控制台应用程序到涉及用户登录和身份验证的完整Web应用程序。
另一个要求是我们不仅需要提供用户身份验证来控制我们将返回的数据,还需要验证我们的组织是否允许访问我们的API的应用程序。因此,这要求我们不仅要验证调用API的应用程序,还要验证通过该应用程序登录的许多用户。
目标是使用像OAuth 2这样的不记名令牌技术。我对OAuth 2不是很熟悉,但在查看之后,我没有看到像这样的两部分身份验证的方法。理想情况下,我们希望发出clientId和clientPassword,然后他们会将其与userid和userpassword一起传递,然后我们会传回令牌。
这是否是任何人在使用OAuth2之前解决的问题,或者这是自定义身份验证解决方案的工作?
答案 0 :(得分:0)
您所描述的内容听起来像是相当标准的Oauth2.0场景,因此您不需要任何自定义内容。
对于网络应用,您可以使用Resource Owners Password Credentials Grant。这是标准流程。
这允许您的Oauth客户端将其客户端ID和客户端密钥以及用户的ID和密码传递给您的Auth服务器,然后可以在发出响应中的令牌之前验证用户和客户端。
但我建议使用Authorization Code Grant,这可能是Web应用程序的最佳选择,它涉及客户端和用户进行有效身份验证。
对于您的控制台应用或任何非用户特定的应用,您可以使用Client Credentials Grant。这允许应用程序进行身份验证并在没有用户的情况下获取令牌。
如果您需要API了解客户端应用程序,那么您唯一无法使用的流程就是隐式授权,它不会对客户端进行身份验证。