JWT、OAuth和OIDC中受众、发布者和客户端术语的差异



"知识的一半是在你不知道的时候说我不知道";谚语

每次我都试图保持我对这些术语的了解清楚和正确。然而,在开发新项目和获取新知识(SaaS, Multi-tenancy, 2Step Verification, idp, SSO)的过程中,我觉得我仍然没有正确地理解它们。谁能给出一个简单有效的解释?

我是ASP。网络开发人员。

我喜欢这句话,所以,这是一些答案。比如我们有一个这样的jwt

{
// ...Some other claim
iss: "MyKnowledgeCenter.com",
aud: "Abu.questioning.com",
// ...Some more other claims
}

首先是关于发行人,表示为iss。这表明整个Jwt是从哪里来的。例如:我们在https://abu.Identity.com有一个访问令牌的请求,但发行者可以是MyKnowledgeCenter.com,或https://abu.Identity.com或其他任何东西。当我们自己编码身份中心化服务器时,我们可以自由地指出这些。

简而言之,iss只是一个Jwt声明,与其他的没有什么区别,除了它的意思是表明这个Jwt是self-declared,它来自一个在这个例子中称为MyKnowledgeCenter.com的发行者。

观众,同样,它只是Jwt中的声明,打算按照我们的意愿设置,表示Jwt本身打算使用的一个或一组服务。

我喜欢的例子:我有两个微服务是CatalogUserProfile,这需要客户端有一个Jwt在MyKnowledgeCenter.com发出访问他们的资源。如果在那2上,需要验证受众(我们可以设置它),那么,即使标志有效,但aud缺少Catalog,客户端也无法访问Catalog微服务资源。

好的,那么客户端在哪里呢?

?好吧,这表明一些东西是设置的,但没有在Jwt中重新呈现。

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

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

简单吗?

最新更新