【问题标题】:Identity Server 4 reference token and securityIdentity Server 4 参考令牌和安全性
【发布时间】:2018-11-29 13:23:25
【问题描述】:

在我的项目中,我使用身份服务器 4、SPA (Angular) 和受保护的 API (PHP)。我决定使用参考令牌。我的客户端(SPA)使用隐式流(不使用客户端密码是否正确?)并在登录后获取访问令牌(调用授权端点)。之后,SPA 必须将令牌发送到 API,以便 API 可以询问身份服务器 4(自省端点),如果访问令牌正确并且 API 可以访问用户的信息。

现在我想知道如何保护通信。因为访问令牌里面没有信息,是需要用jwt把他发送到API还是用普通的JSON发送就够了?据我了解,API 必须使用 jwt 承载调用自省端点。

这种方法安全吗?我还应该怎么做?

【问题讨论】:

    标签: .net-core jwt identityserver4 openid-connect


    【解决方案1】:

    没有这样的要求 - 使用 JWT 调用自省的 API。如果 API 设置为与 JWT 一起使用,它只会使用来自 IDS 的公钥验证令牌的签名。如果它设置为使用引用令牌 - 它会调用自省,以获取用户信息(这是 JWT 的有效负载)。 Reference tokens documentation.

    您的 API 需要使用其 ID 和 Secret 进行保护,以便您可以调用自省端点。

    调用它时,您发送参考令牌(它仍然是访问令牌,但不是 JWT)、client_idclient_secret。请求的内容类型应该是application/x-www-form-urlencoded,并且应该是POST。

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

    不需要额外的安全性 - 客户端 ID 和 Secret 是安全性,从 API 到 IDS 的调用是服务器到服务器的(当然假设你在 https 后面)

    【讨论】:

    • 感谢您的回答。问题是我没有client_secret,因为SPA 不能保存这个秘密。 (至少那是我读到的)。还有一个问题:在IDS接受自省点的调用后,api应该用jwt将答案发送给客户端还是没有必要?目前我只在客户端和 api 之间发送 json
    • 很抱歉,我可能没有正确表达自己 - 我的 client_id 和 secret 是指 API 的那些。关于您的问题 - API 需要内省的响应来验证用户身份(声明等)。无需将此信息发送回客户端(除非某些特定逻辑不需要 id)
    • 嗯,好的,谢谢。并且从 API 到客户端的响应(如果客户端想要来自 API 的一些数据而不是对 IDS 的调用)应该是 jwt 以保护数据?
    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 2017-06-29
    • 2020-08-05
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多