使用OAuth 2验证ASP.NET Web API-要使用的最佳授权类型?

使用OAuth 2验证ASP.NET Web API-要使用的最佳授权类型?,asp.net,oauth,asp.net-web-api,Asp.net,Oauth,Asp.net Web Api,我正在尝试构建以下内容: 具有本地用户帐户的网站(使用ASP.NET MVC) 向移动应用程序公开数据的API(使用ASP.NET Web API) 移动应用程序(最初为Android,通过OAuth连接) 注意:我不需要与其他提供商共享我的数据,但可能希望Android和iOS应用程序都连接到同一web服务 我使用最新的ASP.NET Web API项目模板创建了一个项目,并选择了“个人授权”,这样我就可以访问ASP.NET身份系统进行登录等 查看该示例,我发现它包括使用OAuth 2“资

我正在尝试构建以下内容:

  • 具有本地用户帐户的网站(使用ASP.NET MVC)
  • 向移动应用程序公开数据的API(使用ASP.NET Web API)
  • 移动应用程序(最初为Android,通过OAuth连接)
注意:我不需要与其他提供商共享我的数据,但可能希望Android和iOS应用程序都连接到同一web服务

我使用最新的ASP.NET Web API项目模板创建了一个项目,并选择了“个人授权”,这样我就可以访问ASP.NET身份系统进行登录等

查看该示例,我发现它包括使用OAuth 2“资源所有者密码凭据”授权授予请求访问令牌的功能,例如:

grant_type=password&username=user&password=password123
使用“Resource Owner Password Credentials”(资源所有者密码凭据)类型的授权授权并从我的Android应用程序中的某些文本框发送用户名和密码就足够了吗?还是我应该使用嵌入式浏览器获取“授权码”,然后发送类似的内容:

client_id=myapp&grant_type=authorization_code&code={code}
每种方法的优点是什么?如果后一种方法更好,我从哪里开始在服务器端实现“授权端点”页面

谢谢

如果您拥有所有服务,并且不打算向第三方服务提供对这些服务的访问,则“资源所有者密码凭据”授权是可以的

当您向第三方提供访问权限时,需要“授权代码”授权。浏览器页面确保 客户端应用程序无法直接访问用户凭据(您不希望某些未知应用程序读取您的用户密码:))。此外,这项补助金还可以根据您的地理位置启用一些不错的功能,如2FA等

如果您想在您的案例中保持简单,请使用资源所有权。 但如果可能的话,试试代码授权


另请看

您是否计划将MVC和Web API服务打包到同一个Web应用程序中,并托管在同一域名上?