msgraphapisを呼び出すことでE5サブスクリプションを更新するツール
アプリケーションを作成します
詳細については、登録アプリケーションを参照し、権限を構成してください。 MSGRAPH APIにアクセスするには、アプリケーションのtenant id 、 client id 、およびclient secret必要です。
ユーザーSecrerファイルを作成します
user-secret.json.exampleをuser-secret.jsonにコピーし、必要に応じて編集します。いつでも資格情報を追加できます。
セキュリティに適した代わりに証明書のsecretを使用する場合は、証明書ファイルへのパスを備えたcertificate secretキーを書くことができます。 certificateを設定した場合、代わりに常にsecretにされます。
作成されたアプリケーションとSecretを追加した後に証明書を追加した場合、 client_id変更される場合がありますので、更新してください。
このツールにPFX形式を使用することがテストされています。ただし、公開キーパーツ(*。CRT)をAzureにアップロードするだけです。
証明書にパスワードがある場合、このようなユーザーシークレットファイルでpasswordsキーを作成できます。
{
"passwords" : {
"<sha512sum>" : " <password> "
}
} <sha512sum>は、小文字の証明書ファイルのSHA512合計であり、 <password>はプレーンでのパスワードです。許可されずに証明書を使用することを避けるために、構成を秘密にしてください。
プログラムのDayOfWeekを意味するため、設定日は慎重である必要があります。ここでは、正しい値を確認するためにここで確認してください。
ヒント
JSON、YAML、およびTOML形式をサポートしています。これは、JSONを例として使用しています。他の形式をいつでも使用できます。私たちがサポートする形式は、モジュールを使用して拡張することもできます
.netをインストールします
詳細については、こちらをご覧ください。Net8以降が必要です。
プログラムを取得します
バイナリファイルを入手するには、ダウンロードまたはビルドできます。
プログラムを実行します
バイナリフォルダーで./E5Renewerを実行するだけで、引数が必要です。
ここにサポートされている議論があります:
--systemd :SystemD環境で実行されている場合、ほとんどの場合、必要はありません。--user-secret :ユーザーシークレットファイルへのパス。--token :JSON APIにアクセスする文字列。--token-file :最初の行がトークンとして使用されるファイル。--listen-unix-socket-permission :UNIXドメインソケットファイルへの許可。エンドポイントhttp://127.0.0.1:5000でリッスンします。デフォルトでは、これはASP.NETコアのデフォルト値です。
ASP.NETコアサポート--urlsパラメーターを設定するパラメーター--urls=http://127.0.0.1:5001または--urls=http://unix:/path/to/socket 。 UNIXドメインソケットファイルの許可は、引数--listen-unix-socket-permissionでカスタマイズできます。
これらのカスタマイズされた引数は、実際にはASP.NETコア構成アイテムであり、アイテムの名前は引数のタイトルケースです。たとえば、 --tokenはTokenにマッピングされ、 --user-secret UserSecretにマッピングされ、 --listen-unix-socket-permission ListenUnixSocketPermissionにマッピングされます。この変換マップを使用すると、JSON構成、環境変数など、ASP.NETコアの方法を使用してそれらを提供することができます。しかし、特別なケースはあります。 --systemd --systemd Systemd=trueを提供する必要があります。これらのカスタマイズされた引数には、 -s 、 -uのような短い形式はありません。
--user-secret 、ASP.NETコア構成値を提供するための任意の方法を通じて提供される必要があります。または、 userSecretのNullReferenceExceptionはthownです。
注記
--tokenと--token-file両方が指定されている場合、 --tokenを好みます。どちらも設定しないのを忘れた場合、ランダムに生成された値を使用します。プログラムにリクエストを送信し、認証エラーを満たした後、ログ出力でそれを見つけることができます。
重要
UNIXソケットの許可を設定する場合は、代わりにその実際の値をOCTAL形式で記述する必要があります。たとえば、 511を使用する代わりに777が必要です。
dotnet publish -c Releaseを実行すると、 E5Renewer/bin/Release/net8.0/publishでバイナリを入手できます
HTTP要求を送信できるcurlまたは任意のツールを使用して、 http://127.0.0.1:5000 5000やUnix Socket /path/to/socketなどのエンドポイントにリクエストを送信します。各リクエストはヘッダーAuthorization: Bearer <auth_token> 。すべてが問題ない場合は、JSONの応答が得られます。 Get Requestの場合は、クエリParam timestampでMilisecondタイムスタンプを送信します。これがPOSTリクエストの場合は、キータイムtimestampを使用してPost JSONのMilisecondタイムスタンプを送信し、文字列に変換します。ほとんどの場合、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秒未満の要求しか受け入れません。
可能なAPIについては、http-api.mdを参照してください
プログラムを拡張するモジュールシステムを作成しました。詳細については、modules.mdを確認できます。