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

时间:2019-02-15 17:57:40

标签: c# reactjs cryptography identityserver4

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

第二个应用程序如何知道令牌有效? 应用程序必须位于同一域中才能正常工作吗? 另外,每个应用都有自己的授权(即用户可以在每个应用中执行的操作),令牌中是否包含所有这些信息,或者我们可以使用相同的令牌为每个应用获取后者?

很抱歉有很多问题。

我是身份服务器和openID连接的新手,所以任何指针都很棒。

谢谢

1 个答案:

答案 0 :(得分:1)

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

要回答您的一些问题:

  

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

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

  

应用程序必须位于同一域中才能工作吗?

他们不必在同一域中。

  

令牌将包含所有这些信息,还是我们可以获取后者   每个使用相同令牌的应用程序?

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