我第一次学习oAuth2。我将使用它来使用两条腿的方法为一些简单的Web服务提供身份验证。
根据我所读到的,流程应该是这样的:Web服务客户端为oAuth服务器提供某种凭证(我正在考虑使用JWT)。如果凭据有效,则oAuth服务器返回访问令牌。然后,Web服务客户端在尝试使用Web服务端点时提供访问令牌。
这是我的问题,为什么不在向终点提出请求时提供JWT?为什么oAuth的流程就是这样设想的。为什么不直接向JTW提供端点并将其用于身份验证?获得访问令牌的额外步骤有什么好处?
谢谢!
答案 0 :(得分:1)
您当然可以直接向Web服务提供JWT。问题是如何以服务信任的方式生成它。
JWT是和access_token,但并非所有access_tokens都是JWT。
您的客户端可以发出JWT,使用密钥(或证书)对其进行签名,然后将其发送到API。拥有第三方(Issuer
)的好处是您可以将身份验证与发出令牌分开。客户端可以通过多种方式进行身份验证(例如usr / pwd,certs,keys等),然后使用JWT来调用API。
额外的抽象为您提供了更大的灵活性和管理可扩展性。例如:如果你有1个API的消费者,那么你可能只需要一个凭证(或JWT,或其他)。如果您计划将API用于许多客户端,那么将该职责交给专门的组件(例如the issuer
)会更有意义。
OAuth BTW,是针对特定用例而设计的:代表您将API访问委托给另一个系统。您授予对系统A的访问权限,以代表您使用权限范围访问系统B上的资源。