在cas服务器上创建的TGT会卡住。正在寻找使用postman/python请求注销的方法。
我即将向SSO和CAS的NMS服务器发送身份验证请求(用于REST查询)。第一步是发送一个post请求到:https://x. x.x.x:443/cas/v1/票证,用户名和密码,主体中grant_type=client_credentials。
然后服务器将提供一个TGT url以继续下一步(服务工单生成)
问题是,收到TGT后,服务器的TGT池用完了,只要我生成一个新的TGT,就可以少1个用户使用服务器的webUI,生成3-4个TGT后,没有用户可以登录,我们需要重新启动TomCat来重置TGT池。
如何正确发送我为释放池而创建的TGT的注销请求(使用postman)?我的下一步将使用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。
删除 /cas/v1/tickets/TGT-fdsjfsdfjkalfewrihfdhfaieHTTP/1.0
上述请求是leopal提到的解决方案