【问题标题】:how to successfully logout from cas after receiving TGT in rest如何在休息时收到 TGT 后从 cas 成功注销
【发布时间】:2020-01-29 03:01:18
【问题描述】:

在 cas 服务器上创建的 TGT 会卡住。寻找一种使用 postman/python 请求注销的方法。

我即将向我们的 NMS 服务器发送一个身份验证请求,该服务器具有 SSO 和 CAS(用于 REST 查询)。 第一步是将发布请求发送到: https://x.x.x.x:443/cas/v1/tickets 在正文中包含用户名和密码以及 grant_type=client_credentials。

然后服务器会提供一个 TGT url 进行下一步(Service Ticket 生成)

问题是,在收到 TGT 后,服务器的 TGT 池用完了,当我生成一个新的 TGT 到生成 3-4 个 TGT 后,没有用户可以使用服务器的 webUI 时,少了 1 个用户可以使用登录,我们需要重新启动 TomCat 以重置 TGT 池。

如何正确地为我创建的 TGT 发送注销请求以释放池(使用邮递员)? 我的下一步将是使用 python 而不是 postman 创建请求。 我的请求结果:

<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\"> <html>
<head>
    <title>201 Created</title>
</head>
<body>
    <h1>TGT Created</h1>
    <form
        action="https://x.x.x.x/cas/v1/tickets/TGT-269-XONFj15axxxxxxxxxxxxxxxI32bYERsZr9hjCIMY2b-nsdnrcp"
        method="POST">Service:<input type="text" name="service" value=""><br><input type="submit" value="Submit"></form>
</body>
</html>    

以下是我用于注销的代码,但它不会释放服务器上的 TGT 资源:

def deAuth(casIP,appIP):
        deAuthenticate_URL = f'https://{appIP}:8443/data/deauthenticate'
        commonLogout_URL = f'https://{appIP}:8443/data/common/logout'
        sessionLogout_URL = f'https://{casIP}:443/session-manager/logout'
        casLogout_URL = f'https://{casIP}:443/logout'
        param = {'service':'https://{appIP}:8443/pages/main'}
        deAuthenticate_r = requests.post(deAuthenticate_URL,params=param,verify=False)
        if deAuthenticate_r.status_code != 200:
                print('deAuthenticate failed!')
        commonLogout_r = requests.get(commonLogout_URL,params=param,verify=False)
        if commonLogout_r.status_code != 200:
                print('commonLogout failed!')
        sessionLogout_r = requests.get(sessionLogout_URL,params=param,verify=False)
        if sessionLogout_r.status_code != 200:
                print('sessionLogout failed!')
        casLogout_r = requests.get( casLogout_URL,params=param,verify=False)
        if casLogout_r.status_code != 200:
                print('casLogout failed!')
        print('Logout attempt is completed!')    

以上代码中的所有请求都会返回 200,但 TGT 仍然有效。 我是否也需要在我的注销请求中包含 TGT?

预期的结果是使 TGT 票证无效,以便其他用户登录服务器的 Webui。

【问题讨论】:

  • 你检查过this吗?
  • 嗯,删除请求是解决方案。谢谢

标签: python rest cas


【解决方案1】:

删除 /cas/v1/tickets/TGT-fdsjfsdfjkalfewrihfdhfaie HTTP/1.0

上面的请求是leopal提到的解决方案

【讨论】:

    猜你喜欢
    • 2019-11-04
    • 2017-04-25
    • 2015-03-19
    • 2022-12-10
    • 2016-07-14
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多