Oauth 2.0 Thinktecture identity server客户端的选择和实现
我正试图用identity server让我的头脑脱离云端 我想实现identity server项目,以便进行身份验证Oauth 2.0 Thinktecture identity server客户端的选择和实现,oauth-2.0,authorization,thinktecture-ident-server,identityserver3,identityserver4,Oauth 2.0,Authorization,Thinktecture Ident Server,Identityserver3,Identityserver4,我正试图用identity server让我的头脑脱离云端 我想实现identity server项目,以便进行身份验证 一个ASP.NETMVC5应用程序 ASP.NET Web API windows服务实现 Int我已经阅读了一些关于客户的详细信息。作者只是说: OAuth2为不同的用例提供了几种“授权类型”。这个 定义的补助金类型包括: 在web服务器上运行的应用程序的授权代码 基于浏览器或移动应用的隐式 使用用户名和密码登录的密码 用于应用程序访问的客户端凭据 授权代码和隐式代码之间有
非常感谢,如果这些都是愚蠢的问题,请原谅。我尽了最大努力让这个答案简短(但我不得不添加大量的上下文来理解答案) 机密与公共客户的对比 客户机(代表您请求访问的应用程序–MVC应用程序、SPA等)根据其使用授权服务器(在我们的案例中为Identity server)进行安全身份验证的能力被归类为机密和公共客户机 例如,Web应用程序(MVC应用程序)被视为机密客户端,因为它是在安全服务器上实现的,并且能够通过授权服务器进行安全客户端身份验证(通过后台通道–不需要用户代理或公共通道)。 此外,它还可以维护秘密令牌(基本上是客户端凭据、访问令牌和刷新令牌),这些令牌受保护不受公共访问(例如,由用户代理/资源所有者) 然而,基于用户代理的应用程序(SPA)和本机应用程序(移动应用程序)被视为公共客户端。这是因为协议数据和客户端凭据很容易被资源所有者访问 授权码授予 将授权代码授权定义为: “授权码授权类型用于获取两种访问权限 令牌和刷新令牌,并针对机密客户端进行了优化。 由于这是一个基于重定向的流,因此客户端必须能够 与资源所有者的用户代理(通常是web)交互 浏览器)并能够接收传入请求(通过重定向) 来自授权服务器。“ 这仅仅意味着,授权代码流针对通过用户代理(浏览器)与资源所有者交互的机密客户端进行了优化,该用户代理(浏览器)能够接收和重定向来自身份验证服务器(Identity Server)的传入请求 抽象地说,授权代码流具有以下顺序:
- 资源所有者使用授权进行身份验证(通过–用户代理) 并获取授权代码
- 资源所有者提供 客户端的授权代码(从重定向后通过用户代理) 授权服务器)
- 客户端通过授权服务器(通过后台通道请求)进行身份验证,并交换授权\u代码以获取访问\u令牌
- 访问令牌存储在客户机中,资源所有者被重定向到相应的资源
- 由于客户端(MVC应用程序)具有access_令牌,因此它可以请求刷新 来自授权服务器的令牌(如果需要)
- 不过,重要的一点是,授权代码流中的资源所有者从未看到(或有权访问)access\u令牌。客户端安全地存储它
- 在隐式授权中,客户端不单独请求授权和访问令牌
- 授权和访问令牌都传递给资源所有者,编码到重定向URI中
- 这会导致此处描述的安全漏洞
- 由于这些安全问题,根据体系结构,刷新令牌不会颁发给公共客户端(它们无法维护客户端机密,因此无法访问\u令牌和刷新令牌)