无法获得JWT令牌

cuongdnv”class=cuongdnv 成员职位:9学我
4月19日编辑 帮助
我参考下面的文档来获得JWT令牌。然而,当我调用API / API /rest/tokenservice时,它不会返回令牌,而是返回一个要求登录的web界面。我如何获得JWT令牌



邮差回应:

最佳答案

  • cuongdnv”class=cuongdnv 成员职位:9学我
    解决方案接受
    @aschaferdiek
    非常简单,我修改了.env文件中的配置,并通过API API /rest/tokenservice获得令牌,id和密码如tokenservice文档中所述。
    这和你的教学方式完全不一样。






答案

  • aschaferdiek”class=aschaferdiek 员工,成员职位:75RM工程
    4月20日编辑
    嗨。为了查询内部令牌服务端点,您需要一个有效的“会话”。在本机安装方法中,您可以使用文档中概述的基本身份验证作为“会话”。
    Curl -u user:pass "http://localhost:8080/api/rest/tokenservice


    :“idToken the-valid-token”,
    “expirationDate”:“了”
    }

    然而,当你部署了RapidMiner AI Hub与Keycloak(和docker),你需要1。启用Keycloak的基本授权;访问路由首先要有一个有效的“登录会话”(cookie名称为RM_SERVER_JSESSIONID3);使用有效的Keycloak令牌。

    1.在Keycloak中启用基本授权
    # rm-server-homedir /配置/ keycloak / keycloak.json



    “enable-basic-auth”:没错,

    }
    2.有效的cookie值
    通过web界面登录,打开浏览器的开发工具,并使用相同的RM_SERVER_JSESSIONID的REST请求中的cookie值/ api /休息/ tokenservice端点。

    3.有效的Keycloak令牌
    检索一个有效的Keycloak访问令牌(从Keycloak的令牌端点,例如通过OpenID Connect)并查询/ api /休息/ tokenservice具有授权的端点:承载访问令牌>.


    不确定你想要实现什么,例如通过REST调度一个进程,我想概述一下,你可以很容易地通过Web服务添加一个进程和触发器。被触发的进程可以使用管理工具扩展。您仍然需要启用Keycloak的基本权限,但如果您想从“外部”触发它。






    David_A”class= cuongdnv”class=
  • David_A”class=David_A 管理员、版主、员工、RMResearcher、会员职位:286RM研究
    如何使用扩展的指南可以在这里找到:
  • cuongdnv”class=cuongdnv 成员职位:9学我
    我怎么能[…]在Keycloak中启用基本授权
    我得到所有的容器,我猜,rapidminer/rapidminer-server:9.10.4-gen2与容器ID [07a1e28603f6]是rm-server-homedir


    所以我访问这个容器并编辑keycloak。Json在路径[/rapidminer/home/configuration]



    我将“enable-basic-auth”改为true

    然后我得到RM_SERVER_JSESSIONID通过[通过web界面登录,打开浏览器的开发人员工具,并使用相同的RM_SERVER_JSESSIONID]


    我得到了RM_SERVER_JSESSIONID (b4uTa9Wc23gkbvZmS2akuPah),然后转到post man并将承载令牌设置为[Keycloak-b4uTa9Wc23gkbvZmS2akuPah]并将请求发送到/api/rest/tokenservice。但我得到了回应[拒绝访问]


  • aschaferdiek”class=aschaferdiek 员工,成员职位:75RM工程
    4月22日编辑
    嗨。抱歉,如果我的列表让你感到困惑,但这三种方法都是解决你问题的不同方法。

    对于基本的验证1。然后,您需要像以前那样为Keycloak启用它,然后使用Keycloak凭据作为授权
    输入邮差。

    对于cookie值2。您需要登录并在Postman报头中提供cookie的值,但不能作为承载令牌内容。

    对于Keycloak令牌3。方法时,您需要从Keycloak令牌端点获得有效的访问令牌,或者查看@David_A张贴并将其用作承载令牌值。

    我们通常推荐方法3,尽管为了完整起见,我喜欢列出所有方法。
  • cuongdnv”class=cuongdnv 成员职位:9学我
    4月24日编辑
    谢谢你的回复。我有以下几点需要确认:

    1.关于基本认证,我在哪里可以获得Keycloak证书?请提供详细说明

    2.我从cookie中获得了RM_SERVER_JSESSIONID,然后将其放在request /api/rest/tokenservice中头部的RM_SERVER_JSESSIONID字段中,但仍然无法获得令牌并返回“拒绝访问”



    3.我通过api /auth/realms/master/protocol/openid-connect/token获得令牌。但是,当使用第一步获得的令牌调用API /execution /jobs时,结果返回一个Unauthorized错误。



    谢谢你。
  • aschaferdiek”class=aschaferdiek 员工,成员职位:75RM工程
    您需要使用Keycloak的访问令牌来调用/api/rest/tokenservice,并将返回的令牌用于任何进一步的请求
登录注册置评。