.net core Identity Server 4参考令牌和安全性

.net core Identity Server 4参考令牌和安全性,.net-core,jwt,identityserver4,openid-connect,.net Core,Jwt,Identityserver4,Openid Connect,在我的项目中,我使用identity server 4、SPA和受保护的API PHP。我决定使用参考标记。我的客户SPA使用隐式流,不使用客户机密正确吗?并在登录调用授权端点后获取访问令牌。之后,SPA必须将令牌发送给API,以便API可以询问identity server 4内省端点访问令牌是否正确,并且API是否可以访问用户信息 现在我想知道,如何确保通信安全。因为访问令牌中没有信息,所以有必要用jwt将其发送到API,还是用普通的JSON发送就足够了?据我所知,API必须使用jwt承载器

在我的项目中,我使用identity server 4、SPA和受保护的API PHP。我决定使用参考标记。我的客户SPA使用隐式流,不使用客户机密正确吗?并在登录调用授权端点后获取访问令牌。之后,SPA必须将令牌发送给API,以便API可以询问identity server 4内省端点访问令牌是否正确,并且API是否可以访问用户信息

现在我想知道,如何确保通信安全。因为访问令牌中没有信息,所以有必要用jwt将其发送到API,还是用普通的JSON发送就足够了?据我所知,API必须使用jwt承载器调用内省端点


这个方法安全吗?或者我还应该做些什么?

没有这样的要求-使用JWT调用内省的API。如果API设置为与JWT一起使用,它将只使用IDS中的公钥验证令牌的签名。如果设置为使用引用令牌,它将调用内省,以获取用户信息,这是JWT的有效负载

您的API需要使用其ID和机密进行保护,以便您可以调用内省端点

调用它时,您发送引用令牌,它仍然是一个访问令牌,但它不是JWT、客户端id和客户端机密。请求的内容类型应该是application/x-www-form-urlencoded,并且应该是POST

来自内省端点的响应是用户信息


不需要额外的安全性-客户端ID和机密是安全性,从API到ID的调用是服务器到服务器的,假设您支持https当然没有这样的要求-使用JWT调用自省的API。如果API设置为与JWT一起使用,它将只使用IDS中的公钥验证令牌的签名。如果设置为使用引用令牌,它将调用内省,以获取用户信息,这是JWT的有效负载

您的API需要使用其ID和机密进行保护,以便您可以调用内省端点

调用它时,您发送引用令牌,它仍然是一个访问令牌,但它不是JWT、客户端id和客户端机密。请求的内容类型应该是application/x-www-form-urlencoded,并且应该是POST

来自内省端点的响应是用户信息


不需要额外的安全性-客户端ID和机密是安全性,并且调用是从API到ID的服务器到服务器的,假设您支持https,当然

谢谢您的回答。问题是我没有客户的秘密,因为水疗中心不能保守秘密。至少我是这么读的。还有一个问题:在IDS接受内省点的调用后,api应该将answeer发送给带有jwt的客户机,还是不需要?目前,我只在客户端和API之间发送json。很抱歉,我没有正确地表达自己的意思——通过client_id和secret,我指的是用于API的。关于您的问题-API需要来自内省的响应来验证用户身份声明等。无需将此信息发送回客户端,除非您不需要某些特定逻辑的id。好的,谢谢。如果客户端需要API中的一些数据,而不是对IDS的调用,那么API对客户端的响应应该是jwt来保护数据?谢谢您的回答。问题是我没有客户的秘密,因为水疗中心不能保守秘密。至少我是这么读的。还有一个问题:在IDS接受内省点的调用后,api应该将answeer发送给带有jwt的客户机,还是不需要?目前,我只在客户端和API之间发送json。很抱歉,我没有正确地表达自己的意思——通过client_id和secret,我指的是用于API的。关于您的问题-API需要来自内省的响应来验证用户身份声明等。无需将此信息发送回客户端,除非您不需要某些特定逻辑的id。好的,谢谢。如果客户端希望从API获得一些数据,而不是对IDS的调用,那么API对客户端的响应应该是jwt来保护数据?