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

时间:2014-02-03 17:14:57

标签: 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身份系统以进行登录等。

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

grant_type=password&username=user&password=password123

使用“资源所有者密码凭据”是否足以输入授权授权,只需从我的Android应用程序中的某些文本框中发送用户名和密码,或者我是否应该使用嵌入式浏览器获取“授权代码”和然后发送更像这样的东西:

client_id=myapp&grant_type=authorization_code&code={code}

每种方法有哪些优点,如果后一种方法更好,我在哪里开始在服务器端实施“授权端点”页面?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您拥有所有服务并且不打算提供对第三方服务的访问权限,那么

“资源所有者密码凭据”授权就可以。

当您提供对第三方的访问权限时,需要“授权代码”授予。浏览器页面确保了 客户端应用程序不直接访问用户凭据(您不希望某个未知的应用程序读取您的用户密码:))。此赠款还可以实现一些不错的功能,例如2FA,具体取决于您的地理位置等。

如果您希望在您的案例中保持简单 - 请使用资源所有权。 但如果可能 - 尝试代码授予。

另请参阅OpenId Connect