首页 > 解决方案 > 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.

标签: asp.netasp.net-coreoauth-2.0openid-connect

解决方案


我喜欢这句话,所以,这是一些答案。假设我们有一个这样的 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 个微服务是CatalogUserProfile,它们要求客户端发出 JwtMyKnowledgeCenter.com以访问他们的资源。如果在这 2 上,需要验证观众(我们可以设置它),那么,即使标志是有效的,但aud缺少Catalog,客户端也无法访问Catalog微服务资源。这同样适用于所有其他人。

好吧,那客户呢?

好吧,这表明设置但未在 Jwt 中重新呈现。

想象一下,我们有一个集中的身份验证服务器,但我们只打算为我们自己的服务和客户端提供服务。不是整个互联网世界,对吧?

因此,指定那些特定的客户会受益,因为我只想在 iOs 上提供一个应用程序,另一个来自 android word 和我们自己的网站。因此,3 个客户。如果来自任何其他具有信息的客户的任何请求与这 3 个中的一个不匹配,我们会立即拒绝它们。

够简单吗?


推荐阅读