我正在阅读一些教程,看看我是否可以使用IdentityServer3问题/句柄令牌来授权访问某些Web Api端点。
我不太了解的一个概念是Client
和Secret
。在以前的项目中使用OAuth时,我从来不必传递标题中的client
或secret
值。我只通过了grant_type
,username
和password
。然而,IdentityServer似乎期望client
和secret
以及grant_type
,username
和password
。
为什么需要client
?不管客户端的类型如何,IdentityServer都不应该只传回一个承载令牌?另外,secret
参数的目的是什么?这用于创建JWT令牌的签名吗?
答案 0 :(得分:4)
client_id
和client_secret
是part of the OAuth spec,不是特定于Identity Server的实现。它们是客户注册的一部分,我将其视为访问控制列表,检查请求方是否有权使用请求的流量和范围接收访问令牌。
未注册的客户是supported in the OAuth规范,但我还没有遇到过。
根据它的声音,您一直在使用ResourceOwner流程,该流程需要grant_type
password
,client_id
,client_secret
,多个scope
&# 39; s,username
和password
。
client_id
和client_secret
也可以使用Authorization
方案在Basic
标头中进行base64编码和传递。
该秘密不用于JWT验证,它仅用于验证传入的客户端。