asp.net - Differences between audience, issuer, and client terms in JWT, OAuth and OIDC
问题描述
"The half of knowledge is to say I don't know when you don't" proverb
Every time I try to keep my knowledge about these terms clear and correct. However, over the development of new projects and acquiring new knowledge (SaaS, Multi-tenancy, 2Step Verification, IdPs, SSO ), I feel like I still do not understand them correctly. Any one can give a simple and efficient explanation?
I am an ASP.NET developer.
解决方案
我喜欢这句话,所以,这是一些答案。假设我们有一个这样的 jwt
{
// ...Some other claim
iss: "MyKnowledgeCenter.com",
aud: "Abu.questioning.com",
// ...Some more other claims
}
首先是关于issuer,表示为iss
。这表明你的整个 Jwt 来自哪里。例如:我们在 请求访问令牌https://abu.Identity.com
,但颁发者可能是MyKnowledgeCenter.com
,或https://abu.Identity.com
其他任何东西。当我们自己编码身份集中服务器时,我们可以自由地指出这些。
简而言之,iss
它只是一个 Jwt 声明,与其他声明没有任何区别,只是它的含义是表明这个 jwt 是来自从这个例子self-declared
调用的颁发者。MyKnowledgeCenter.com
关于Audience,这只是 Jwt 中的一个声明,旨在按照我们的意愿设置,代表 Jwt 本身打算使用的一个或一组服务。
我喜欢示例:我有 2 个微服务是Catalog
和UserProfile
,它们要求客户端发出 JwtMyKnowledgeCenter.com
以访问他们的资源。如果在这 2 上,需要验证观众(我们可以设置它),那么,即使标志是有效的,但aud
缺少Catalog
,客户端也无法访问Catalog
微服务资源。这同样适用于所有其他人。
好吧,那客户呢?
好吧,这表明设置但未在 Jwt 中重新呈现。
想象一下,我们有一个集中的身份验证服务器,但我们只打算为我们自己的服务和客户端提供服务。不是整个互联网世界,对吧?
因此,指定那些特定的客户会受益,因为我只想在 iOs 上提供一个应用程序,另一个来自 android word 和我们自己的网站。因此,3 个客户。如果来自任何其他具有信息的客户的任何请求与这 3 个中的一个不匹配,我们会立即拒绝它们。
够简单吗?
推荐阅读
- vue.js - 在 vue App 中使用 Axios GET 和 Authorization Header
- php - 无法从 ZF2 Twitter 用户搜索中获取派生属性
- python - 操作顺序 - Python 3
- node.js - 快递中的bodyparse文本数据
- winapi - 如何使用 sendmessage 发送在 win32 中具有 timer proc 的 wm_timer
- unity3d - 统一漏洞?排序组需要设置为 1 并设置回 0 以使透明度排序轴正常工作(内部视频)
- javascript - 如何“四舍五入”数字,通过在javascript中的第二个数字后放置零
- c# - 调试公共交通 / Rabbit MQ
- linux - 如何将文件从给定目录复制到目标目录的随机目录
- javascript - 如何在 php while loop JSON 中制作更高效的 js for 循环