Authentication 如何获得JWT?

Authentication 如何获得JWT?,authentication,jwt,Authentication,Jwt,当阅读关于使用JWTs保护应用程序时,通常会说客户端最初从服务器获取令牌,然后将该令牌与每个请求一起发送到API 一旦您有了代币,这种方法就非常有效。就我所见,传输令牌的默认方式是使用HTTP报头,即使用Bear作为令牌前缀的身份验证作为值 但是-是否也有一种默认的方式来最初获取令牌?在示例中,您经常看到这只是对HTTP端点的简单请求,然后返回JSON。但是我想知道是否还有更标准的工作流,例如描述这个端点的名称,如OAuth2 有什么提示吗?每个OAuth2服务器都有自己的端点。客户端可以使用诸

当阅读关于使用JWTs保护应用程序时,通常会说客户端最初从服务器获取令牌,然后将该令牌与每个请求一起发送到API

一旦您有了代币,这种方法就非常有效。就我所见,传输令牌的默认方式是使用HTTP报头,即使用Bear作为令牌前缀的身份验证作为值

但是-是否也有一种默认的方式来最初获取令牌?在示例中,您经常看到这只是对HTTP端点的简单请求,然后返回JSON。但是我想知道是否还有更标准的工作流,例如描述这个端点的名称,如OAuth2


有什么提示吗?

每个OAuth2服务器都有自己的端点。客户端可以使用诸如和之类的发现协议来发现相关端点的名称。

是一种令牌格式,用于安全协议中

如何从授权服务器获取令牌取决于您正在使用的授权流

OAuth 2.0中定义了4个用于不同客户机和用途的授权流

1. 授权码授予 这项赠款用于网络应用。用户的浏览器被重定向(HTTP 302)到授权服务器。授权服务器负责对用户进行身份验证(通过用户名/密码、智能卡、双因素身份验证等)

然后,授权服务器使用代码将浏览器重定向回web应用程序中预先注册的端点。然后,web应用程序使用自己的凭据(客户端id和客户端机密)和授权代码从授权服务器请求访问令牌

授权服务器向web应用程序返回访问令牌和刷新令牌。请注意,浏览器(不受信任)从未看到访问令牌。只有web应用程序(受信任)可以访问访问令牌和刷新令牌

此授权很难从web应用程序以外的其他客户端使用,因为它基于HTTP重定向

2.隐性补助 此授权用于不受信任的客户端,如JavaScript应用程序或第三方移动客户端(从应用商店下载的客户端)

它还将浏览器(或浏览器控件)重定向到授权服务器,但在成功身份验证后,它不会将代码返回到浏览器,而是直接返回访问令牌。由于客户端不受信任,授权不会返回刷新令牌。访问令牌需要存储在某处,容易受到XSS攻击

尽管您没有获得刷新令牌,但某些实现确实提供了一种获取新访问令牌的方法,方法是在隐藏的IFRAME中与授权服务器通信,并使用cookie对授权服务器本身进行身份验证

3.资源所有者密码凭据授予 此授权适用于受信任的客户端,例如桌面应用程序或具有安全存储功能的第一方移动应用程序。客户端应用程序向用户(资源所有者)请求用户名/密码,然后将其发送到授权服务器以获取访问令牌和刷新令牌

一旦客户端拥有访问令牌,它就可以丢弃密码,因为它可以使用刷新令牌来获取新的访问令牌。这使得它比基本身份验证更安全

此授权不依赖于浏览器重定向,可以从任何可以执行HTTP请求的应用程序轻松使用

4.客户端凭据授予 此授权用于验证客户端(应用程序)而不是客户端的用户

在这种情况下,客户机直接向授权服务器提交其客户机id和密码,以获取访问和刷新令牌


因此,前两个授权基本上依赖于类似浏览器的功能(HTTP重定向、HTML登录页),而其他两个授权只需要一个HTTP堆栈就可以与授权服务器通信。

我所看到的关于授权类型的最佳解释,起首部分!同上@Hui Wang,上面的评论!