Identityserver4 在OIDC的隐式流中我们真的需要id_令牌吗?

Identityserver4 在OIDC的隐式流中我们真的需要id_令牌吗?,identityserver4,openid-connect,identityserver3,Identityserver4,Openid Connect,Identityserver3,我正在开发一个SPA应用程序,我正在使用推荐的隐式流,并且我能够获得access\u令牌和id\u令牌。由于我需要的不仅仅是配置文件信息,我已经创建了一个单独的端点来返回用户配置文件信息以及特定于我们业务的所有其他信息,该端点受到保护,并且只能使用访问令牌作为承载令牌进行访问。在SPA中获得access_令牌后,我立即调用该端点以获取所有用户信息,包括显示在UI上的名字、姓氏等。如果返回的id_令牌和access_令牌对存在任何问题,则用户配置文件信息端点调用将失败。那么,我真的需要验证id_令

我正在开发一个SPA应用程序,我正在使用推荐的隐式流,并且我能够获得access\u令牌和id\u令牌。由于我需要的不仅仅是配置文件信息,我已经创建了一个单独的端点来返回用户配置文件信息以及特定于我们业务的所有其他信息,该端点受到保护,并且只能使用访问令牌作为承载令牌进行访问。在SPA中获得access_令牌后,我立即调用该端点以获取所有用户信息,包括显示在UI上的名字、姓氏等。如果返回的id_令牌和access_令牌对存在任何问题,则用户配置文件信息端点调用将失败。那么,我真的需要验证id_令牌吗?因为我不依赖该令牌中的任何信息

对于针对外部登录提供程序或授权代码流进行身份验证,验证id_令牌是有意义的,但在我的情况下,我不确定

根据OpenID规范:

当使用隐式流时,必须以与第3.1.3.7节中定义的授权代码流相同的方式验证ID令牌的内容,但本节中规定的差异除外。 1.客户端必须根据JWS[JWS],使用JOSE头的alg头参数中指定的算法验证ID令牌的签名。 2.必须检查nonce声明的值,以验证它是否与身份验证请求中发送的值相同。客户端应检查nonce值是否存在重播攻击。检测重播攻击的精确方法是特定于客户端的。

为什么不在授权请求中使用response\u type参数。通过更改其值,您可以更改您收到的授权响应

标识文档提到了可能的响应类型值。以下是从他们的

如您所见,如果您不希望SPA接收id令牌,可以将response_type值设置为token。如果这样做,您将只获得一个访问令牌,这是由OAuth 2.0规范强制执行的。请参阅中OAuth 2.0的隐式流响应类型解释。请注意,当您使用response_type=token时,您使用的是OAuth 2.0而不是OIDC


只要您使用各自协议启用的功能,我认为您的方法没有任何错误

想知道你为什么做了一个额外的端点为什么不直接使用?@DalmTo:正如我提到的,我们定制的端点返回的信息比常规的用户身份相关信息要多,而且它位于不同的数据库中。。。所以我不想把这一点带到IDP中,为什么一开始就使用OpenID Connect?@KcDoD我们正在构建的应用程序中只有一个是SPA,我们也有一些MVC、mobile和其他应用程序。。。其他OIDC流对其他应用程序很有用验证刷新令牌(即使您以后不使用它)有好处,因为验证包括检查nonce,以确保您获得预期的响应。不过,oidc客户端js库为您完成了所有这些,您正在使用它吗?尝试过了,它很有效!不过,注销体验本身就有点不同。我很感激!!