【问题标题】:Authorize users of web application and allow them to access the API service授权 Web 应用程序的用户并允许他们访问 API 服务
【发布时间】:2018-12-03 16:54:30
【问题描述】:

我想知道可以针对以下要求实施可能的安全机制。

我有一个 API 服务器,它有多个将提供数据的 API 服务。 (例如 Graph API)

我想允许少数组织访问这些数据。组织拥有自己的网站,因此他们将代表他们对用户进行身份验证。

因此,如果用户向允许的组织提出请求,我们需要做的就是授权用户。

这可以通过OAuth实现吗?

请提出可以实施的各种安全机制。

【问题讨论】:

  • 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。取而代之的是describe the problem以及迄今为止为解决该问题所做的工作

标签: .net azure security oauth-2.0 single-sign-on


【解决方案1】:

你看过微软 OWIN 吗?您可以实现自己的从 OAuthAuthorizationServerProvider 继承的授权提供程序 - 带有用户名/密码身份验证等的不记名令牌 https://georgedyrra.com/2016/09/28/using-owin-to-self-host-web-api-and-secure-endpoints/

【讨论】:

  • 我的问题是我应该如何在 API 服务器中验证用户。因为 web api 服务器不知道用户。他们实际上是供应商组织用户(Web 应用程序)。我们在这里遵循什么样的机制?我们从 Web 应用程序向 API 服务器传递什么来告诉该用户已经过身份验证并只允许他们访问数据?
【解决方案2】:

您可以考虑将 JWT 用作身份验证令牌。对于 API 调用,每个用户都必须向自己的组织请求签名的 JWT,并将 JWT 作为授权标头包含在内。您将 API 服务器设置为仅信任从这些组织签名的 JWT。通常,您的验证逻辑将验证令牌是否由这些组织签名,并包含匹配的令牌颁发者声明“iss”,并检查到期时间。您还可以要求这些组织将您的 api 服务器列为令牌受众(包含在“aud”声明中)。如果令牌是可信且经过验证的,您可以根据令牌内的其他声明进一步授权用户。

在 MicroProfile 社区,我们尝试定义一种可互操作的方式来解决您描述的类似场景,https://github.com/eclipse/microprofile-jwt-auth/blob/master/spec/src/main/asciidoc/interoperability.asciidoc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多