"知识的一半是在你不知道的时候说我不知道";谚语
每次我都试图保持我对这些术语的了解清楚和正确。然而,在开发新项目和获取新知识(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本身打算使用的一个或一组服务。
我喜欢的例子:我有两个微服务是Catalog
和UserProfile
,这需要客户端有一个Jwt在MyKnowledgeCenter.com
发出访问他们的资源。如果在那2上,需要验证受众(我们可以设置它),那么,即使标志有效,但aud
缺少Catalog
,客户端也无法访问Catalog
微服务资源。
好的,那么客户端在哪里呢?
?好吧,这表明一些东西是设置的,但没有在Jwt中重新呈现。
想象一下,我们有一个集中式身份验证服务器,但我们只打算服务于我们自己的服务和客户端。不是整个互联网世界,对吧?
所以,指定那些特定的客户端会受益,因为我只想在iOs上提供一个应用程序,另一个来自android word和我们自己的网站。因此,3个客户端。如果来自其他客户端的任何请求的信息与这3个不匹配,我们将立即拒绝它们。
简单吗?