Jenkins with Azure active directory身份验证:REST API访问不使用承载令牌
我需要使用python代码访问Jenkins REST API。需要一些关于正确方法的指导 我在ApacheTomcat中托管了启用SSL的jenkins v2.176.1。 我已根据配置Azure AD身份验证。 我可以在浏览器中使用我的Azure广告凭据登录,并访问jenkins的REST API 当我尝试根据样本从curl或postman访问restapi时,我能够获得访问令牌,但jenkins restapi(标题中带有Jenkins with Azure active directory身份验证:REST API访问不使用承载令牌,azure,tomcat,jenkins,oauth-2.0,azure-active-directory,Azure,Tomcat,Jenkins,Oauth 2.0,Azure Active Directory,我需要使用python代码访问Jenkins REST API。需要一些关于正确方法的指导 我在ApacheTomcat中托管了启用SSL的jenkins v2.176.1。 我已根据配置Azure AD身份验证。 我可以在浏览器中使用我的Azure广告凭据登录,并访问jenkins的REST API 当我尝试根据样本从curl或postman访问restapi时,我能够获得访问令牌,但jenkins restapi(标题中带有授权:Bearer[access\u token])响应显示为未经授
授权:Bearer[access\u token]
)响应显示为未经授权
配置的API权限为:在Azure Active directory图表下,Group.Read.All和User.Read.All。我可以从postman访问REST API的唯一方法是: 步骤1:在带有oauth2选项的“邮递员授权”选项卡中-->获取新访问令牌-->授予\类型为
“授权代码”
。响应包含访问令牌、刷新令牌和id\u令牌
这将在postman中设置与microsoft登录相关的Cookie。
步骤2:使用参数“id\u-token:id\u-token”(从上一步获得)向https://[jenkinsHost]/securityRealm/communitelogin执行GET请求
它返回一个HTML响应(200):
工作
脚本已禁用。单击“提交”继续
document.forms[0]。提交();
这将使用JSESSIONID
设置jenkins cookie步骤3:使用参数
id\u令牌
将请求发布到:https://[jenkins\u host]/jenkins/securityRealm/finishLogin
,该参数的值可从上一个响应中获得。(跳过此步骤会从REST API返回403响应,即使cookie是从步骤2设置的)步骤4:在不使用任何其他参数/头的情况下获取对Jenkins REST API的请求可以正常工作
是否有人可以用正确的流程指导我访问REST API,或者我正在做的事情(使用cookies)是否正确?请参考帖子中的解决方案:
<html>
<head>
<title>Working...</title>
</head>
<body>
<form method="POST" name="hiddenform" action="https://[jenkins_host]/jenkins/securityRealm/finishLogin">
<input type="hidden" name="id_token" value="eyJ0eXAiOiJKV1Qi....." />
<input type="hidden" name="session_state" value="1b151d4a-3318-49b5-a653-18260501ba6a" />
<noscript>
<p>Script is disabled. Click Submit to continue.</p>
<input type="submit" value="Submit" />
</noscript>
</form>
<script language="javascript">document.forms[0].submit();</script>
</body>
</html>