เครื่องมือในการต่ออายุการสมัครสมาชิก E5 โดยโทรหา Msgraph APIs
สร้างแอปพลิเคชัน
ดูแอปพลิเคชันลงทะเบียนและกำหนดค่าสิทธิ์สำหรับข้อมูลเพิ่มเติม เราต้องการ tenant id client id และ client secret ของแอปพลิเคชันของคุณเพื่อเข้าถึง MSGRAPH APIs
สร้างไฟล์ความลับของผู้ใช้
คัดลอก user-secret.json.example ไปยัง user-secret.json , แก้ไขตามความต้องการของคุณ คุณสามารถเพิ่มข้อมูลรับรองเพิ่มเติมได้เสมอ
หากคุณต้องการใช้ใบรับรองแทนความลับซึ่งดีกว่าสำหรับความปลอดภัยคุณสามารถเขียนคีย์ certificate ด้วยพา ธ ไปยังไฟล์ใบรับรองของคุณแทนคีย์ secret หากเราพบว่าคุณตั้ง certificate มันจะถูกใช้แทน secret เสมอ
หากคุณเพิ่มใบรับรองหลังจากแอปพลิเคชันที่สร้างขึ้นและเพิ่มความลับ client_id อาจมีการเปลี่ยนแปลงดังนั้นโปรดอัปเดต
การใช้รูปแบบ PFX กับเครื่องมือนี้ถูกทดสอบ แต่คุณต้องอัปโหลดส่วนคีย์สาธารณะ (*. CRT) ไปยัง Azure
หากใบรับรองของคุณมีรหัสผ่านคุณสามารถสร้างรหัส passwords ผ่านในไฟล์ลับผู้ใช้เช่นนี้:
{
"passwords" : {
"<sha512sum>" : " <password> "
}
} <sha512sum> เป็นผลรวม SHA512 ของไฟล์ใบรับรองในกรณีที่ต่ำกว่าและ <password> เป็นรหัสผ่าน ธรรมดา โปรดเก็บการกำหนดค่าในความลับเพื่อหลีกเลี่ยงคนที่ใช้ใบรับรองของคุณโดยไม่ได้รับอนุญาต
การตั้งค่าวันนั้นจำเป็นต้องระมัดระวังเนื่องจากหมายถึง DayOfWeek ในโปรแกรมตรวจสอบที่นี่เพื่อค้นหาค่าที่ถูกต้อง
เคล็ดลับ
เราสนับสนุนรูปแบบ Json, Yaml และ Toml ในตอนนี้แม้ว่าเราจะใช้ JSON เป็นตัวอย่างคุณสามารถใช้รูปแบบอื่น ๆ ได้ตลอดเวลา รูปแบบที่สนับสนุนโดยเราสามารถขยายได้โดยใช้โมดูล
ติดตั้ง. NET
ดูที่นี่สำหรับข้อมูลเพิ่มเติมเราต้องการ. NET 8 และใหม่กว่า
รับโปรแกรม
คุณสามารถดาวน์โหลดหรือสร้างเพื่อรับไฟล์ไบนารี
รันโปรแกรม
เพียงแค่เรียกใช้ ./E5Renewer ในโฟลเดอร์ไบนารีพร้อมอาร์กิวเมนต์ที่จำเป็น
นี่คือข้อโต้แย้งที่ได้รับการสนับสนุน:
--systemd : หากทำงานในสภาพแวดล้อม SystemD ส่วนใหญ่คุณไม่ควรต้องการ--user-secret : พา ธ ไปยังไฟล์ลับผู้ใช้--token : สตริงเพื่อเข้าถึง JSON API--token-file : ไฟล์ที่ใช้บรรทัดแรกเป็นโทเค็น--listen-unix-socket-permission : การอนุญาตให้ใช้ไฟล์ซ็อกเก็ตโดเมน Unix เราจะฟังในจุดสิ้นสุด http://127.0.0.1:5000 โดยค่าเริ่มต้นนี่เป็นค่าเริ่มต้นของ ASP.NET Core
ASP.NET CORE รองรับ --urls พารามิเตอร์ในการตั้งค่าจุดสิ้นสุดฟังที่กำหนดเองเช่น --urls=http://127.0.0.1:5001 หรือ --urls=http://unix:/path/to/socket การอนุญาตให้ใช้ไฟล์ซ็อกเก็ตโดเมน UNIX สามารถปรับแต่งได้ด้วยอาร์กิวเมนต์ --listen-unix-socket-permission
อาร์กิวเมนต์ที่กำหนดเองเหล่านั้นเป็นรายการการกำหนดค่าหลักของ ASP.NET ชื่อรายการคือ Titlecase ของอาร์กิวเมนต์ ตัวอย่างเช่น --token จะถูกแมปกับ Token - --user-secret จะถูกแมปกับ UserSecret และ --listen-unix-socket-permission จะถูกแมปไปยัง ListenUnixSocketPermission ด้วยแผนที่แปลงนี้คุณสามารถใช้วิธีการของ ASP.NET Core ในการจัดหาพวกเขาเช่นการกำหนดค่า JSON ตัวแปรสภาพแวดล้อม --systemd แต่มีกรณีพิเศษ: --systemd ควรได้รับ Systemd=true หากคุณไม่ได้ใช้อาร์กิวเมนต์ Commandline เนื่องจากการกำหนดค่าของ ASP.Net Core ต้องมีค่า อาร์กิวเมนต์ที่กำหนดเองเหล่านั้นไม่มีรูปแบบสั้น ๆ เช่น -s , -u
--user-secret จะต้องจัดเตรียมผ่านวิธีการใด ๆ เพื่อให้ค่าการกำหนดค่าหลักของ ASP.NET Core หรือ NullReferenceException ของ userSecret จะถูก town
บันทึก
ถ้ามีการระบุ --token และ --token-file ทั้งคู่เราชอบ --token หากคุณลืมที่จะไม่ตั้งค่าของพวกเขาเราจะใช้ค่าที่สร้างขึ้นแบบสุ่ม คุณสามารถค้นหาได้ในเอาต์พุตบันทึกหลังจากส่งคำขอใด ๆ ไปยังโปรแกรมและพบข้อผิดพลาดการรับรองความถูกต้อง
สำคัญ
หากคุณต้องการตั้งค่าการอนุญาตซ็อกเก็ต UNIX คุณต้องเขียนค่าจริงแทนรูปแบบแปด ตัวอย่างเช่นการใช้ 511 แทน 777 เป็นสิ่งจำเป็น
เรียกใช้ dotnet publish -c Release และคุณสามารถรับ Binary ที่ E5Renewer/bin/Release/net8.0/publish
การใช้ curl หรือเครื่องมือใด ๆ ที่สามารถส่งคำขอ HTTP ส่งคำขอไปยังจุดสิ้นสุดเช่น http://127.0.0.1:5000 หรือ UNIX Socket /path/to/socket แต่ละคำขอควรส่งด้วย Authorization: Bearer <auth_token> คุณจะได้รับการตอบกลับ JSON หากทุกอย่างเรียบร้อยดี หากเป็นคำขอ GET ให้ส่งการประทับเวลา milisecond ในการสืบค้น param timestamp หากเป็นคำขอโพสต์ให้ส่งการประทับเวลา milisecond ในโพสต์ JSON ด้วย timestamp ที่สำคัญและแปลงเป็นสตริง ส่วนใหญ่เราจะคืนข้อความ JSON แทน แต่คุณต้องตรวจสอบรหัสตอบกลับเพื่อดูว่าคำขอประสบความสำเร็จหรือไม่ หากคุณใช้ HTTPS เพียงส่งคำขอ HTTPS แทน
ตัวอย่างเช่น:
curl -H 'Authorization: Bearer <auth_token>' -H 'Accept: application/json'
'http://127.0.0.1:5000/v1/list_apis?timestamp=<timestamp>' | jq '.'
{
"method": "list_apis",
"args": {},
"result": [
"AgreementAcceptances.Get",
"Admin.Get",
"Agreements.Get",
"AppCatalogs.Get",
"ApplicationTemplates.Get",
"Applications.Get",
"AuditLogs.Get",
"AuthenticationMethodConfigurations.Get",
"AuthenticationMethodsPolicy.Get",
"CertificateBasedAuthConfiguration.Get",
"Chats.Get", "Communications.Get",
"Compliance.Get",
"Connections.Get",
"Contacts.Get",
"DataPolicyOperations.Get",
"DeviceAppManagement.Get",
"DeviceManagement.Get",
"Devices.Get",
"Direcory.Get",
"DirectoryObjects.Get",
"DirectoryRoleTemplates.Get",
"DirectoryRoles.Get",
"DomainDnsRecords.Get",
"Domains.Get",
"Drives.Get",
"Education.Get",
"EmployeeExperience.Get",
"External.Get",
"FilterOperators.Get",
"Functions.Get",
"GroupLifecyclePolicies.Get",
"GroupSettingTemplates.Get",
"GroupSetings.Get",
"Groups.Get",
"Identity.Get",
"IdentityGovernance.Get",
"IdentityProtection.Get",
"IdentityProviders.Get",
"InfomationProtecion.Get",
"Invitations.Get",
"OAuth2PermissionGrants.Get",
"Organization.Get",
"PermissionGrants.Get",
"Places.Count.Get",
"Places.GraphRoom.Get",
"Planner.Get",
"Policies.Get",
"Print.Get",
"Privacy.Get",
"Reports.Get",
"RoleManagement.Get",
"SchemaExtensions.Get",
"ScopedRoleMemberships.Get",
"Search.Get",
"Security.Get",
"ServicePrincipals.Get",
"Shares.Get",
"Sites.Get",
"Solutions.Get",
"SubscribedSkus.Get",
"Subscriptions.Get",
"Teams.Get",
"TeamsTemplates.Get",
"Teamwork.Get",
"TenantRelationships.Get",
"Users.Get"
],
"timestamp": "<timestamp_returned_by_server>"
}
เซิร์ฟเวอร์จะยอมรับคำขอที่เก่ากว่าเวลาเซิร์ฟเวอร์น้อยกว่า 30 วินาที เท่านั้น
ดู http-api.md สำหรับ API ที่เป็นไปได้
เราได้สร้างระบบโมดูลเพื่อขยายโปรแกรมคุณสามารถตรวจสอบโมดูล MD สำหรับข้อมูลเพิ่มเติม