ฉันพยายามใช้ jenkins rest api ในคำแนะนำบอกว่าฉันต้องมีคีย์ api ฉันได้ดูหน้าการกำหนดค่าทั้งหมดเพื่อหามัน ฉันจะรับคีย์ API สำหรับเจนกินส์ได้อย่างไร
ฉันพยายามใช้ jenkins rest api ในคำแนะนำบอกว่าฉันต้องมีคีย์ api ฉันได้ดูหน้าการกำหนดค่าทั้งหมดเพื่อหามัน ฉันจะรับคีย์ API สำหรับเจนกินส์ได้อย่างไร
คำตอบ:
ตั้งแต่ Jenkins 2.129 การกำหนดค่าโทเค็น API มีการเปลี่ยนแปลง :
ตอนนี้คุณสามารถมีโทเค็นหลายตัวและตั้งชื่อได้ สามารถเพิกถอนได้ทีละรายการ
ก่อน Jenkins 2.129: แสดงโทเค็น API ดังนี้:
โทเค็น API ถูกเปิดเผย
คุณสามารถเปลี่ยนโทเค็นโดยคลิกที่เปลี่ยน API Tokenปุ่ม
Show API Token
ดูเหมือนจะใช้ไม่ได้อีกต่อไป
วิธีที่ไม่ใช่ UI ในการทำโพสต์นี้ Jenkins 2.129 คือ:
curl 'https://<jenkinsURL>/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
--data 'newTokenName=foo' \
--user username:Password
ซึ่งส่งคืน:
{
"status": "ok",
"data": {
"tokenName": "foo",
"tokenUuid": "<uuid>",
"tokenValue": "<redacted>"
}
}
พรีเจนกินส์ 2.129
curl http://<username>:<password>@<jenkins-url>/me/configure
ทดสอบใน Jenkins 2.225
หลังจากทำการวิจัยเป็นเวลาหลายชั่วโมงฉันพบคำตอบ:
Api Token ใช้แทนโทเค็น CSFR อย่างไรก็ตามจะเกิดอะไรขึ้นหากคุณต้องการทำการรับรองความถูกต้องจากไคลเอนต์อื่น ๆ (POSTMAN, CLI. curl ฯลฯ )
ก่อนอื่นคุณต้องได้รับโทเค็น CSFR และบันทึกข้อมูลในคุกกี้ด้วย --cookie-jar
curl -s --cookie-jar / tmp / cookies -u ชื่อผู้ใช้: รหัสผ่าน http: // localhost: 8080 / crumbIssuer / api / json
{"_class": "hudson.security.csrf.DefaultCrumbIssuer", "crumb": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "crumbRequestField": "Jenkins-Crumb"}: "Jenkins-Crumb"}
จากนั้นเราสามารถอ่านคุกกี้--cookie
และสร้างโทเค็นใหม่ได้:
curl -X POST -H 'Jenkins-Crumb: your_crumb_token_generated_above' --cookie / tmp / คุกกี้ http: // localhost: 8080 / me / descriptorByName / jenkins.security.ApiTokenProperty / createNewToken? newTokenName = รหัสผ่าน your -utoken
{"status": "ok", "data": {"tokenName": "โทเค็น Android ของฉัน", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8e8cb155ca}