【发布时间】:2020-11-16 15:05:17
【问题描述】:
目前正在使用 .NET CORE 3.1 和 Identity 构建一个 API,以在其中管理我们的身份验证/授权。我们希望使用生成的 API 密钥,而不是需要刷新的短期令牌(它不适合我们的用例场景)。
我们要做的是为用户/第三方提供生成 API 密钥的选项,并允许他们将身份角色分配给 API 密钥而不是用户。这样我们仍然可以使用 [Authorize] 属性来授予/限制他们对特定端点的访问。
我们有一个用户表来处理核心应用程序本身内的身份验证/授权,并有一个表来存储生成的 API 密钥。一个用户可以生成多个 API 密钥(例如,一个对端点具有只读权限,一个具有写入权限)。我们只需要将 API 密钥链接到身份角色,并在通过请求标头传入 API 密钥时使用 [Authorize] 属性。
有人对如何进行这项工作有任何想法/建议吗?或者关于这是否是一个坏主意以及如何做得更好的任何建议?任何建议表示赞赏。
【问题讨论】:
-
为什么不使用带有证书的 TLS?
-
嗨,亚当,您可以为授权指定默认策略,这可以让您将其设置为您自己的自定义策略。我在另一个问题上写了一个答案,你可能会发现它很有用stackoverflow.com/a/62950533/5517088
-
@jdweng 我想你误解了这个问题。 TLS 是一种传输协议,与 API 认证/授权无关
-
同意Kevin,您可以使用自定义策略或自定义Authorize属性来实现授权。更多详细信息,请查看以下链接:custom authentication、custom AuthorizeAttribute 和 Policy-based authorization。
标签: c# asp.net-core asp.net-identity asp.net-core-webapi