应该使用什么 OpenID Connect 授权流程来保护 MVC 客户端或其最终用户之间的 Web API 资源?

What OpenID Connect authorization flow should be used to secure Web API resources between an MVC client or its end-users?

使用 IdentityServer3OpenID Connect 的正确方法是什么(流程和配置)以实现以下内容:

我们有 一个 MVC 站点 Products 一个 Web API Products.API我们必须保护所有 Web API 端点:

  1. 一些端点可以而且应该只能由 MVC 应用程序代表经过身份验证(登录)的用户访问。

  2. 其他的端点,比如用于账号注册、密码重置或者匿名操作的端点,需要直接授权给MVC客户端站点,因为图中没有经过身份验证的用户。

我们目前正在使用 Hybrid Flow,但这主要是在观看了 Dominick Baier 的一个视频后产生的。我查看了 https://gist.github.com/jawadatgithub/638c11f08ecc0d76b05c,看来我们正在寻找的是 客户端凭据流 资源所有者密码凭据流 的组合, 但我不确定我什至可以混合两个流程,因为显然不推荐这样做。

您可以将 API 拆分为 "service" 类型 API 和 "user" API 并具有单独的身份验证流程,但您真的需要有 2 APIs?

注册码真的属于API吗?听起来 MVC 应用程序(猜测它也是您的身份提供者)应该处理帐户注册——这通常是使用 Oauth2.0 的关键分离:API 根本不关心用户管理员!

如果您确实重构了注册功能以与身份提供者/Auth 服务器一起使用,那么您是否仍然需要 2 个身份验证流程?

如果这样做,您可以只使用密码流,并在您的身份系统中为非用户上下文端点设置一个伪造的 "admin" 用户。您的 MVC 应用程序可以传入 "admin" 用户的凭据,并且 API 可以为该特定用户编码。这太可怕了,我不推荐它,但我看到它有效!