【发布时间】:2020-10-02 19:12:17
【问题描述】:
我正在为多个 API 开发身份验证/授权架构。
我将 IdentityServer4 用作安全令牌服务 (STS)。
根据我从“Dominick Baier”(构建 IdentitySever4 的人之一)中读到的内容,只有两种类型的流应该使用:
- 客户端凭据流。 (机器对机器)
- 授权代码流程 + PCKE。 (适用于迭代用户)。
我有几个 C# Web API 将与每个(机器对机器)通信,我将使用客户端凭据流。
但是有一些 WPF 桌面应用程序需要访问一些 API,并且没有用户。 应该使用哪个流程?
我读过: 桌面/本地和移动应用程序应该使用授权代码流授权(使用公共客户端和 PKCE),因为它们托管在客户端,并且客户端/秘密可能会泄露(也许在桌面应用程序上我们可以加密秘密?但是接下来需要管理一种方法来存储解密它的秘密吗?)
然后我读到: “只要您有一个不关心最终用户身份的系统(并且只需要对系统进行身份验证),请使用 OAuth2 客户端凭据授予。”
目前,这是我的情况,我不关心最终用户身份(但也许在不久的将来我会关心)。
因此,由于上述几点相互冲突: - 我应该使用哪个流程? - 我可以拥有一个使用客户端凭据流的桌面客户端并且安全吗?
另外,我读过一些关于 Mutual TLS 的文章,如果我使用它,这会改变我应该使用哪个流程吗?
【问题讨论】:
标签: c# authentication oauth-2.0 identityserver4 openid-connect