【问题标题】:Angular + Keycloak request parameter are differentAngular + Keycloak 请求参数不同
【发布时间】:2018-11-24 12:58:05
【问题描述】:

根据本文档,我在 2.x.x 版本中使用 Angular 5 和 Keycloak-Angular:https://www.npmjs.com/package/keycloak-angular

本教程不适用于我。登录后,当令牌请求出现时,将 client_id 和 cllient_secret 作为 base64 编码的身份验证标头发送。

keycloak 服务器希望这些信息作为表单正文的一部分。

如何配置 keycloak-angular 模块以满足我的需求?

感谢每一个帮助!

【问题讨论】:

    标签: angular keycloak


    【解决方案1】:

    因为您希望您的令牌出现在 POST 请求的正文中。我认为您不能直接使用该模块。如果您创建自己的服务来获取 keycloak 令牌并将其存储在服务变量中,然后编写一个 HTTP 拦截器将令牌插入 POST 请求正文中,那会更好。类似于以下博客 https://medium.com/@SumanthShankar/on-demand-login-with-keycloak-angular-4-5-ngrx-backend-api-bookmark-able-links-ecb065dc7993 中指定的内容。

    但在CustomHttp 服务中,您可以将令牌放入正文中,而不是在标头中放入。

    【讨论】:

    • 我们正在使用 keycloak 服务器和“官方”模块。为什么这两者不兼容?
    • 我在一年前使用了带角度的keycloak,但我从未在正文中发送过令牌。 Keycloak 总是希望它出现在标题中。我想你可能在服务器端使用了一些特殊的配置或拦截器,它需要正文中的令牌。除非有特殊情况,否则您将能够使用 keycloak 提供的模块。
    • 我不想在正文中发送令牌。要获得身份验证令牌,我必须向 keycloak 服务器发送一个发布请求,其中包含例如clientid、secret 和请求正文中先前请求的代码。但是角度模块在头部发送clientid和secret。我不认为,有人对服务器进行了如此重大的更改。
    • 我又试了一次。我需要在 post 请求正文中提供以下内容: code grant_type redirect_uri client_id client secret 然后我得到一个响应,响应头中带有访问令牌和 id 令牌。 Angular keycloak 模块发送 client_id 和 client_secred 编码在请求的头部。我真的很感兴趣这是否是因为旧的服务器版本或其他原因,以及是否有适合我们服务器的模块。我很高兴你的帮助。
    • 让我试一次......如果我得到任何答案,我会修改答案......我也会添加评论
    【解决方案2】:

    通过将访问类型更改为公共来解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-27
      • 2022-12-22
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 2019-08-05
      • 2020-08-29
      • 1970-01-01
      相关资源
      最近更新 更多