我们有Jenkins实例与授权模式登录用户可以做任何事情
和单个管理员超级用户
与令牌。
我们使用此groovy脚本查询生成队列:
def builder = new groovy.json.JsonBuilder()
builder {
queueItems(Jenkins.instance.queue.items.collect { obj ->
[
id: obj.id,
name: obj.task.name,
isStuck: obj.stuck,
isBlocked: obj.blocked,
isDisabled: obj.task.disabled,
inQueueSince: obj.inQueueSince,
why: obj.why,
causesDescription: obj.causesDescription,
queueItemUrl: obj.url,
taskUrl: obj.task.url
]
})
}
println builder.toPrettyString()
在我们安装Azure广告插件之前,这一切都很好。当我们这样做时,脚本执行请求会产生错误:
Date: Thu, 01 Aug 2019 15:03:29 GMT
X-Content-Type-Options: nosniff
X-You-Are-Authenticated-As: superuser
X-You-Are-In-Group-Disabled: JENKINS-39402: use -Dhudson.security.AccessDeniedException2.REPORT_GROUP_HEADERS=true or use /whoAmI to diagnose
X-Required-Permission: hudson.model.Hudson.RunScripts
X-Permission-Implied-By: hudson.model.Hudson.Administer
Content-Type: text/html;charset=utf-8
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache,no-store,must-revalidate
X-Hudson-Theme: default
Referrer-Policy: same-origin
X-Hudson: 1.395
X-Jenkins: 2.186
X-Jenkins-Session: 9cf3a1af
X-Hudson-CLI-Port: 50000
X-Jenkins-CLI-Port: 50000
X-Jenkins-CLI2-Port: 50000
X-Frame-Options: sameorigin
Server: Jetty(9.4.z-SNAPSHOT)
Transfer-Encoding: chunked
我们尝试使用域用户验证此请求,如下所示:
curl -k -X POST -u "USERNAME@DOMAIN:PASSWORD" -d "script=%0A%20%20%20%20def%20builder%20%3D%20new%20groovy.json.JsonBuilder()%0A%0A%09builder%20{%0A%09%20%20queueItems(Jenkins.instance.queue.items.collect%20{%20obj%20-%3E%0A%09%09%20%20%5B%0A%09%09%09id%3A%20obj.id%2C%0A%09%09%09name%3A%20obj.task.name%2C%0A%09%09%09isStuck%3A%20obj.stuck%2C%0A%09%09%09isBlocked%3A%20obj.blocked%2C%0A%09%09%09isDisabled%3A%20obj.task.disabled%2C%0A%09%09%09inQueueSince%3A%20obj.inQueueSince%2C%0A%09%09%09why%3A%20obj.why%2C%0A%09%09%09causesDescription%3A%20obj.causesDescription%2C%0A%09%09%09queueItemUrl%3A%20obj.url%2C%0A%09%09%09taskUrl%3A%20obj.task.url%0A%09%09%20%20%5D%0A%09%20%20%20})%0A%09}%0A%0A%09println%20builder.toPrettyString()" https://jenkinsurl/scriptText
使用RESTer Chrome插件,它工作得很好,但我们没有设法使用其他程序(如CURL)使其工作。
我们发现cookies存在问题,在发送第一个请求之前无法设置cookies。
那么,在这样的Jenkins配置中,读取作业队列(使用curl)的正确方法是什么?
我们需要使用现有的Jenkins用户令牌而不是AD auth来执行该操作,或者使用一些插件来读取队列并返回该数据,而无需任何身份验证。
目前我只能找到两个解决办法。詹金斯GitHub上已经提出了这个问题。
沈杰在詹金斯问题页面上提出以下建议,以帮助确保访问:
在基于Azure Active Directory矩阵的安全部分中,矩阵中需要有两个用户才能使其用于访问Jenkins API。自动补全将为您提供一个用户名,如用户名(对象id)。除此之外,您还需要添加一个用户名,如“用户名(用户ID)”,并给予它阅读权限。这样,应用编程接口的事情应该会起作用。
另外,确认curl请求与RESTer Chrome插件请求的输出匹配。您的curl命令很可能不会生成与RESTer Chrome插件相同的输出。
问题内容: 我在jenkins中有sh脚本,其中包含sudo ssh命令,并且出现此错误 我发现解决方案说添加 这些行在/ etc / sudoers中,但仍然无法正常工作。 问题答案: 在最后添加添加以下行。
问题内容: 我正在尝试连接到HTTPS URL,但是我需要使用客户端身份验证以及第三方软件在我的系统上放置的证书。 我丝毫不知道如何找到或使用它,我所要做的只是C#示例代码,这与我为此找到的所有Java答案都大不相同。(例如,KeyStore显然需要某种密码吗?) 这是我拥有的C#示例代码 然后,它仅遍历WS2_store_Certs CertificateCollection并一路检查它们。再进
我想构建一个API路由,经过身份验证的用户和未经身份验证的用户都可以调用该路由,并根据用户是否经过身份验证返回数据。 我卡在使用身份验证::检查()。 控制器的功能是这样的: 我最后有两个场景: 情景1 在这种情况下,在控制器中,当我检查Auth::check()在if条件内时,无论用户是否经过身份验证,我总是得到错误条件。 方案 2 在这种情况下,在控制器中,当我检查Auth::check()时
问题内容: 如何在AngularJs中使用基本身份验证?我已经在Google上搜索了,但是资源对我来说不起作用。我 非常 新AngularJS 问题答案: 假设您的html定义如下: 您可以使用以下基本身份验证将后端连接到rest api: 请注意,此代码的大部分是方法。如果不需要支持IE9及更低版本,则可以将其替换为本地JS实现- atob()和btoa():https : //develope
问题内容: 你可以在模板方面知道当前用户是否已通过身份验证: 但是我没有找到获取经过身份验证的用户列表的方法。 问题答案: 与rz的答案一起,你可以查询未到期的会话模型,然后将会话数据转换为用户。一旦知道了,就可以将其转换为模板标记,该标记可以在任何给定页面上呈现列表。 (这都是未经测试的,但希望将接近工作)。 提取所有已登录的用户… 使用此功能,你可以制作一个简单的包含模板标签… 然后,你可以在
问题内容: 有谁知道如何在laravel 5.2中使用多重身份验证! 我想使用它,但我不知道如何? 没有人有教程或项目设置多重身份验证吗? 问题答案: 您需要两个表,并 在命令后运行Run命令以创建内置身份验证 两种模型:Users(已存在)和Admin 现在打开config / auth.php并进行以下更改 创建一个新的中间件 Kernel.php中的更改 创建一个新文件夹Http / Con