أداة لتجديد الاشتراك E5 عن طريق استدعاء واجهات برمجة تطبيقات Msgraph
إنشاء التطبيق
راجع تسجيل التطبيق وتكوين أذونات لمزيد من المعلومات. نحتاج إلى tenant id client id client secret من تطبيقك للوصول إلى واجهات برمجة تطبيقات MsGraph.
قم بإنشاء ملف Secrer للمستخدم
انسخ user-secret.json.example إلى user-secret.json ، قم بتحريره كحاجتك. يمكنك دائمًا إضافة المزيد من أوراق الاعتماد.
إذا كنت ترغب في استخدام الشهادة بدلاً من ذلك السر ، وهو أمر أفضل للأمان ، فيمكنك كتابة مفتاح certificate مع مسار إلى ملف الشهادة بدلاً من المفتاح secret . إذا وجدنا أنك ضبط certificate ، فسيتم استخدامها دائمًا secret .
إذا قمت بإضافة شهادة بعد إنشاء التطبيق وإضافة Secret ، فقد يتم تغيير client_id لذا يرجى تحديثها.
يتم اختبار تنسيق PFX لهذه الأداة. لكنك تحتاج فقط إلى تحميل الجزء المفتاح العام (*. CRT) إلى Azure.
إذا كانت شهادتك تحتوي على كلمة مرور ، فيمكنك إنشاء مفتاح passwords في ملف سري المستخدم مثل هذا:
{
"passwords" : {
"<sha512sum>" : " <password> "
}
} <sha512sum> هو مجموع SHA512 من ملف الشهادة في الحالة السفلية و <password> هو كلمة مرورها في سهل ، يرجى الاحتفاظ بالتكوين سراً لتجنب شخص ما باستخدام شهادتك دون السماح به.
هناك حاجة إلى أن تكون أيام الإعداد حذرة ، لأنها تعني DayOfWeek في البرنامج ، تحقق هنا لمعرفة قيمتها الصحيحة.
نصيحة
نحن ندعم تنسيقات JSON و YAML و TOML في الوقت الحالي ، كما نستخدم JSON كمثال ، يمكنك دائمًا استخدام تنسيقات أخرى. يمكن حتى تمديد التنسيقات التي تدعمها لنا باستخدام الوحدات النمطية
تثبيت .NET
انظر هنا لمزيد من المعلومات ، نحن بحاجة إلى .NET 8 وبعد ذلك.
الحصول على البرنامج
يمكنك تنزيل أو بناء للحصول على ملفات ثنائية.
تشغيل برنامج
ببساطة تشغيل ./E5Renewer في مجلد الثنائيات مع الحجج اللازمة.
فيما يلي الحجج المدعومة:
--systemd : إذا تم تشغيله في بيئة النظام ، في معظم الأحيان يجب ألا تحتاج إليها.--user-secret : المسار إلى الملف السري للمستخدم.--token : السلسلة للوصول إلى JSON API.--token-file : الملف الذي يستخدم السطر الأول كرمز.--listen-unix-socket-permission : الإذن إلى ملف Socket Domain 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 Domain Socket مع الوسيطة --listen-unix-socket-permission .
هذه الوسائط المخصصة هي في الواقع عناصر تكوين ASP.NET الأساسية ، أسماء العناصر هي titlecase للوسائط. على سبيل المثال ،-سيتم تعيين --token إلى Token ، وسيتم تعيين --user-secret إلى UserSecret ، وسيتم تعيين --listen-unix-socket-permission إلى ListenUnixSocketPermission . من خلال خريطة التحويل هذه ، يمكنك استخدام طرق ASP.NET Core لتزويدها ، مثل تكوين JSON ، ومتغير البيئة ، وما إلى ذلك ، ولكن هناك حالة خاصة: -يجب تزويد --systemd مع Systemd=true إذا لم تستخدم وسيطة سطر الأوامر ، حيث يتطلب تكوين ASP.NET CORE قيمة ، أضفنا فحصًا خاصًا لعلم --systemd . هذه الحجج المخصصة لا تحتوي على أشكال قصيرة مثل -s ، -u .
--user-secret من خلال أي طريقة لتوفير قيمة تكوين Core ASP.NET ، أو سيتم وضع NullReferenceException من userSecret .
ملحوظة
إذا تم تحديد-كلاهما --token --token-file ، نفضل- --token . إذا نسيت أن تضع أي منهما ، فنحن نستخدم قيمة تم إنشاؤها عشوائيًا. يمكنك العثور عليها في إخراج السجل بعد إرسال أي طلب إلى البرنامج وتلبية خطأ المصادقة.
مهم
إذا كنت ترغب في تعيين إذن Unix Socket ، فيجب عليك كتابة قيمته الفعلية بدلاً من تنسيق ثماني. على سبيل المثال ، مطلوب استخدام 511 بدلاً من ذلك 777 .
Run dotnet publish -c Release ويمكنك الحصول على ثنائي في E5Renewer/bin/Release/net8.0/publish
باستخدام curl أو أي أداة يمكنها إرسال طلب HTTP ، أرسل طلبًا إلى نقاط النهاية مثل http://127.0.0.1:5000 أو Unix Socket /path/to/socket ، يجب إرسال كل طلب مع Authorization: Bearer <auth_token> . سوف تحصل على استجابة JSON إذا كان كل شيء على ما يرام. إذا كان طلب الحصول على طلب ، فأرسل الطابع الزمني للميلي ثانية في برنامج الاستعلام Param timestamp ، إذا كان طلبًا آخر ، فأرسل Timestamp Milisecond في Post 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 للحصول على واجهات برمجة التطبيقات المحتملة
لقد أنشأنا نظام الوحدة النمطية لتوسيع البرنامج ، يمكنك التحقق من الوحدات النمطية لمزيد من المعلومات.