【问题标题】:DotnetOpenAuth scopes and claimsDotnetOpenAuth 范围和声明
【发布时间】:2013-02-12 18:17:32
【问题描述】:

我正在使用OAuth2 authorization 构建一个ASP.NET Web Api,并且正在开发一个我们已经拥有的应用程序:

  • 客户
  • 组织
  • 用户

一个客户有一个或多个组织,一个用户可以为一个或多个客户行事。

我想让这个逻辑成为范围和访问令牌的一部分。这样我可以限制访问,但我也可以使用我的 API 从应用程序中移除一些(复杂的)逻辑。 (当他们选择小范围时)

范围

  • 组织结构
  • 客户
  • 全部

例如

当应用向组织请求访问令牌时 范围用户应该在授权页面上看到两个下拉框。一到 选择一个客户和第二个从组织中选择一个 这个客户有。

这样,具有范围组织的访问令牌应仅限于该单一组织之外的数据。

使用DotNetOpenAuth 实现这一点的最佳方法是什么?

我应该将 organizationId 和 customerId 作为范围添加到 accesstoken 吗?如果我这样做,我将如何处理“客户”范围?我应该只添加没有组织 ID 的 CustomerId 吗? (客户最多可以拥有大约 150 个组织)

理想情况下,我想将其转换为可以轻松用于授权用户操作的声明。

如果范围是解决此问题的正确方法,或者我可以如何更好地解决此问题的一些想法,我想要一些反馈,而无需重新发明轮子或破坏 DotNetOpenAuth 框架的开放。

附言 我同时构建了AuthorizationServerResourceServer

【问题讨论】:

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


    【解决方案1】:

    就我而言,您不应该添加组织 ID。您应该只将令牌视为用户能够访问组织的证明,而不是具体哪些组织。服务器可以使用存储在令牌中的用户名来仅显示允许用户查看的组织。换句话说,现在服务器需要做两项检查:

    1. 服务器检查所提供的令牌是否在 Organisation 范围内获得授权。
    2. 服务器检查用户(从令牌中检索到的)被授权的特定组织。

    这样您可以保持 OAuth 范围简单明了,但您仍然可以将访问权限限制为仅特定组织。

    【讨论】:

    • 感谢您的回答!问题是一个用户可以访问多个组织。在这种情况下,令牌是用户授权应用程序访问该特定资源的证明。
    • 是的,但是服务器可以检查,对吗?它不必包含在令牌中。
    • 我一直在考虑您的解决方案(这就是我没有立即回复的原因),但我只是不知道这如何适合。执行授权和身份验证(并生成令牌)的服务器与 API 使用的服务器是不同的服务器/数据库。 API 只需要一个令牌,尝试将令牌转换为声明,如果涉及到安全性,这就是 API 所知道的全部。如果您查看 DotNetOpenAuth 框架,我也看不到“内置”/“好”的方式来保存令牌与令牌允许访问的内容之间的关系。如果我错了,请纠正我:)
    猜你喜欢
    • 2022-01-21
    • 2013-11-19
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多