我是.Net Core WebAPI身份验证的新手。我发现OpenIddict是一种易于使用的身份验证服务,但在我开始使用之前,我注意到GitHub中有不同身份验证流的样本。我无法找到有关这些身份验证流程的任何文档,因此我会想到以下问题。感谢有人可以提供有关该领域的见解。 GitHub网址:https://github.com/openiddict/openiddict-core
为什么有不同的流程..使用哪一个?我猜测每个流程都符合不同的应用性质,如果是的话,
一个。每个流程的优点和缺点是什么?
湾是否有任何最佳实践或指南有助于确定适合该特定应用的正确选项(认证流程)?
提前致谢。
答案 0 :(得分:3)
为什么有不同的流程?使用哪一个?
OpenIddict是OAuth2 / OpenID Connect服务器。因此,它实现了这两个规范定义的所有经典核心流程。
正如您所知,每个流都有不同的用例:
当无头客户端应用程序需要访问自己的资源时,将使用客户端凭据授予。此流程中没有用户参与,这基本上是服务器到服务器的方案。
资源所有者密码凭据授权是最简单的OAuth2流:客户端应用程序使用用户名和用户密码发送令牌请求,并返回访问令牌。此流程有时被视为“遗留”流程,不得由您自己管理的第三方应用程序使用(因为它是客户端知道用户凭据的唯一流程)。
代码流是最复杂的OAuth2 / OpenID Connect流程,它使用重定向并允许创建同意页面,用户可以决定是否要授予对客户端应用程序的访问权限与应用程序分享他的凭据。
隐式流程是一个简化的代码流,适用于基于浏览器的应用。
有关详情,请参阅此博文:http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-choosing-the-right-flows/。