【问题标题】:Authenticating ASP.NET Web API with OAuth 2 - Best type of Authorization Grant to use?使用 OAuth 2 对 ASP.NET Web API 进行身份验证 - 要使用的最佳授权授予类型?
【发布时间】:2014-02-27 07:06:44
【问题描述】:

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

  • 具有本地用户帐户的网站(使用 ASP.NET MVC)
  • 向移动应用公开数据的 API(使用 ASP.NET Web API)
  • 移动应用(最初是 Android,通过 OAuth 连接)

注意:我不需要与其他提供商共享我的数据,但可能希望 Android 和 iOS 应用程序都连接到同一个网络服务。

我使用最新的 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}

每种方法的优势是什么,如果后一种方法更好,我应该从哪里开始在服务器端实现“授权端点”页面?

谢谢!

【问题讨论】:

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

标签: asp.net oauth asp.net-web-api


【解决方案1】:

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

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

如果您想在您的情况下保持简单 - 使用资源所有权。 但如果可能的话 - 试试代码授权。

也看OpenId Connect

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2012-05-27
    相关资源
    最近更新 更多