C# 如何验证从主应用程序启动的应用程序中的令牌是否正确?

C# 如何验证从主应用程序启动的应用程序中的令牌是否正确?,c#,reactjs,cryptography,identityserver4,C#,Reactjs,Cryptography,Identityserver4,我们希望构建一个主React应用程序,在登录后显示许多应用程序(用户在经过身份验证后可以访问的应用程序列表)。当用户单击其中一个应用时,主应用的令牌将发送到另一个应用 第二个应用程序如何知道令牌有效? 应用程序是否需要在同一个域上才能工作? 此外,每个应用程序都有自己的授权(即用户在每个应用程序中可以做什么),令牌是否包含所有这些信息,或者我们是否可以使用相同的令牌为每个应用程序获取这些信息 很抱歉有这么多问题 我是identity server和openID connect的新手,所以任何指针

我们希望构建一个主React应用程序,在登录后显示许多应用程序(用户在经过身份验证后可以访问的应用程序列表)。当用户单击其中一个应用时,主应用的令牌将发送到另一个应用

第二个应用程序如何知道令牌有效? 应用程序是否需要在同一个域上才能工作? 此外,每个应用程序都有自己的授权(即用户在每个应用程序中可以做什么),令牌是否包含所有这些信息,或者我们是否可以使用相同的令牌为每个应用程序获取这些信息

很抱歉有这么多问题

我是identity server和openID connect的新手,所以任何指针都很好


谢谢

首先,你不应该在你的应用之间传递代币。您的所有应用程序都应该是独立的
客户端
,但它们的共同点是它们将使用相同的中央机构url(您的身份服务器)来检索令牌。从用户的角度来看,这一切都是无缝的,因为使用cookie身份验证在中央机构上实现了单点登录-一旦用户登录到您的主应用程序,每当其他应用程序重定向用户以获取令牌时,它们将绕过cookie身份验证的登录页面,直接进入同意页面(也可以通过将客户端属性
requiresent
设置为false跳过同意页,这通常适用于第一方应用程序)

要回答您的一些问题:

第二个应用程序如何知道令牌有效

如果您不在应用程序之间传递令牌,那么这并不是真正需要的,但从技术上讲,它可以通过其签名或使用内省端点来验证令牌

应用程序是否需要在同一个域上才能工作

它们不必在同一个域上

令牌是否包含所有这些信息,或者我们是否可以获得后者 对于使用相同令牌的每个应用程序


令牌包含的声明在很大程度上是基于客户端请求的范围控制的(至少在默认情况下)。因此,如果您让每个应用程序请求它们自己的令牌,那么它就必须请求它感兴趣的所有作用域。由于Identity Server 4的疯狂灵活性,许多这种行为都可以被覆盖和扩展,因此您几乎总是有办法完成您想要的任务。

首先,您不应该在您之间传递令牌你的应用程序。你的所有应用程序都应该是独立的
客户端
,但它们的共同点是相同的中央机构url(你的身份服务器)它们将用于检索令牌。从用户的角度来看,这一切都是无缝的,因为使用cookie身份验证在中央管理局上实现了单点登录-一旦用户登录到您的主应用程序,每当其他应用程序重定向用户以获取令牌时,它们将绕过cookie身份验证的登录页面,直接进入同意页(也可以通过将客户端属性
requiresent
设置为false跳过同意页,这通常适用于第一方应用程序)

要回答您的一些问题:

第二个应用程序如何知道令牌有效

如果您不在应用程序之间传递令牌,那么这并不是真正需要的,但从技术上讲,它可以通过其签名或使用内省端点来验证令牌

应用程序是否需要在同一个域上才能工作

它们不必在同一个域上

令牌是否包含所有这些信息,或者我们是否可以获得后者 对于使用相同令牌的每个应用程序

令牌包含的声明在很大程度上是基于客户端请求的范围控制的(至少在默认情况下)。因此,如果您让每个应用程序请求其自己的令牌,那么它将不得不请求其感兴趣的所有作用域。由于Identity Server 4的疯狂灵活性,许多这种行为都可以被覆盖和扩展,因此您几乎总是有办法实现您想要的