Alat untuk Memperbarui Langganan E5 dengan menelepon MSGRAPH API
Buat Aplikasi
Lihat Daftar Aplikasi dan konfigurasikan izin untuk info lebih lanjut. Kami membutuhkan tenant id , client id , dan client secret dari aplikasi Anda untuk mengakses MSGraph API.
Buat file Secrer Pengguna
Salin user-secret.json.example to user-secret.json , edit sebagai kebutuhan Anda. Anda selalu dapat menambahkan lebih banyak kredensial.
Jika Anda ingin menggunakan sertifikat sebagai rahasia, mana yang lebih baik untuk keamanan, Anda dapat menulis kunci certificate dengan jalur ke file sertifikat Anda alih -alih kunci secret . Jika kami menemukan Anda menetapkan certificate , itu akan selalu digunakan sebagai gantinya secret .
Jika Anda menambahkan sertifikat setelah aplikasi yang dibuat dan menambahkan rahasia, client_id dapat diubah jadi harap perbarui.
Menggunakan format PFX untuk alat ini diuji. Tetapi Anda hanya perlu mengunggah bagian kunci publik (*. CRT) ke Azure.
Jika sertifikat Anda memiliki kata sandi, Anda dapat membuat kunci passwords dalam file rahasia pengguna seperti ini:
{
"passwords" : {
"<sha512sum>" : " <password> "
}
} <sha512sum> adalah jumlah SHA512 dari file sertifikat dalam huruf kecil dan <password> adalah kata sandinya di Plain , silakan simpan konfigurasi secara rahasia untuk menghindari seseorang menggunakan sertifikat Anda tanpa diizinkan.
Pengaturan hari diperlukan untuk berhati -hati, karena itu berarti DayOfWeek dalam program, periksa di sini untuk mengetahui nilainya yang benar.
Tip
Kami mendukung format JSON, YAML dan TOML untuk saat ini, meskipun kami menggunakan JSON sebagai contoh, Anda selalu dapat menggunakan format lain. Format yang didukung oleh kami bahkan dapat diperpanjang dengan menggunakan modul
Instal .net
Lihat di sini untuk info lebih lanjut, kita membutuhkan .NET 8 dan nanti.
Dapatkan program
Anda dapat mengunduh atau membangun untuk mendapatkan file biner.
Jalankan program
Cukup jalankan ./E5Renewer di folder binari dengan argumen yang dibutuhkan.
Berikut argumen yang didukung:
--systemd : Jika dijalankan di lingkungan SystemD, sebagian besar waktu Anda seharusnya tidak membutuhkannya.--user-secret : Jalur ke file rahasia pengguna.--token : String untuk mengakses JSON API.--token-file : File mana baris pertama digunakan sebagai token.--listen-unix-socket-permission : izin ke file soket domain UNIX. Kami akan mendengarkan di titik akhir http://127.0.0.1:5000 secara default, ini adalah nilai default dari ASP.NET Core.
ASP.NET Core mendukung --urls UNTUK untuk mengatur titik akhir mendengarkan yang disesuaikan, seperti --urls=http://127.0.0.1:5001 atau --urls=http://unix:/path/to/socket . Izin File Soket Domain UNIX dapat disesuaikan dengan argumen --listen-unix-socket-permission .
Argumen yang disesuaikan itu sebenarnya adalah item konfigurasi inti ASP.NET, nama item adalah titlecase argumen. Misalnya, --token akan dipetakan ke Token , --user-secret akan dipetakan ke UserSecret , dan --listen-unix-socket-permission akan dipetakan untuk ListenUnixSocketPermission . Dengan peta konversi ini, Anda dapat menggunakan cara ASP.NET Core untuk menyediakannya, seperti konfigurasi JSON, variabel lingkungan, dll. Tetapi ada kasus khusus: --systemd harus disediakan dengan Systemd=true jika Anda tidak menggunakan argumen Commandline, karena konfigurasi Core ASP.NET memerlukan nilai, kami menambahkan cek khusus untuk -Sistem --systemd . Argumen yang disesuaikan itu tidak memiliki formulir pendek seperti -s , -u .
--user-secret harus disediakan melalui metode apa pun untuk memberikan nilai konfigurasi inti ASP.NET, atau NullReferenceException dari userSecret yang akan dikelilingi.
Catatan
Jika --token dan --token-file keduanya ditentukan, kami lebih suka --token . Jika Anda lupa untuk tidak mengatur keduanya, kami menggunakan nilai yang dihasilkan secara acak. Anda dapat menemukannya dalam output log setelah mengirim permintaan apa pun ke program dan memenuhi kesalahan otentikasi.
Penting
Jika Anda ingin mengatur izin soket UNIX, Anda harus menulis nilai sebenarnya sebagai gantinya format oktal. Misalnya, menggunakan 511 sebagai gantinya 777 diperlukan.
Jalankan dotnet publish -c Release dan Anda bisa mendapatkan biner di E5Renewer/bin/Release/net8.0/publish
Menggunakan curl atau alat apa pun yang dapat mengirim permintaan HTTP, kirim permintaan ke titik akhir seperti http://127.0.0.1:5000 atau unix socket /path/to/socket , setiap permintaan harus dikirim dengan Authorization: Bearer <auth_token> . Anda akan mendapatkan respons JSON jika semuanya baik -baik saja. Jika ini adalah permintaan GET, kirim cap waktu Milisecond di Query Param timestamp , jika itu adalah permintaan pos, kirim cap waktu milisecond di post json dengan timestamp utama dan konversinya menjadi string. Sebagian besar waktu, kami akan mengembalikan JSON sebagai pengganti teks biasa, tetapi Anda perlu memeriksa kode respons untuk melihat apakah permintaan itu berhasil. Jika Anda menggunakan HTTPS, cukup kirim permintaan HTTPS sebagai gantinya.
Misalnya:
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>"
}
Server hanya akan menerima permintaan kurang dari 30 detik lebih tua dari waktu server.
Lihat http-api.md untuk kemungkinan API
Kami telah membuat sistem modul untuk memperluas program, Anda dapat memeriksa modul.md untuk info lebih lanjut.