Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins with Azure active directory身份验证:REST API访问不使用承载令牌_Azure_Tomcat_Jenkins_Oauth 2.0_Azure Active Directory - Fatal编程技术网

Jenkins with Azure active directory身份验证:REST API访问不使用承载令牌

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])响应显示为未经授

我需要使用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]
)响应显示为未经授权

配置的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>