msgraph apis에 전화하여 E5 구독 갱신 도구
응용 프로그램을 만듭니다
자세한 내용은 등록 응용 프로그램 및 권한 구성을 참조하십시오. MSGRAPH API에 액세스하려면 응용 프로그램의 tenant id , client id 및 client secret 필요합니다.
사용자 비밀 파일을 만듭니다
user-secret.json.example user-secret.json 에 복사하여 필요로 편집하십시오. 항상 더 많은 자격 증명을 추가 할 수 있습니다.
보안에 더 나은 비밀 인 인증서를 대신 인증서를 사용하려면 secret 키를 대신 인증서 파일로 경로로 certificate 키를 작성할 수 있습니다. certificate 설정하면 항상 secret 로 사용됩니다.
생성 된 응용 프로그램 및 비밀을 추가 한 후 인증서를 추가하면 client_id 변경 될 수 있으므로 업데이트하십시오.
이 도구에 PFX 형식을 사용하는 것이 테스트됩니다. 그러나 공개 키 부분 (*. crt)을 Azure에 업로드하면됩니다.
인증서가 비밀번호가있는 경우 사용자 비밀 파일에서 다음과 같은 passwords 키를 만들 수 있습니다.
{
"passwords" : {
"<sha512sum>" : " <password> "
}
} <sha512sum> 은 소문자 인 인증서 파일의 SHA512 합계이며 <password> 는 비밀번호 입니다. 허용되지 않고 인증서를 사용하는 사람을 피하기 위해 구성을 비밀리에 보관하십시오.
프로그램의 DayOfWeek 의미하기 때문에 일을 조심해야합니다. 여기에서 올바른 가치를 찾으려면 여기를 확인하십시오.
팁
우리는 JSON, YAML 및 TOML 형식을 지원합니다. Althouth는 JSON을 예를 들어 다른 형식을 사용할 수 있습니다. 우리가 지원하는 형식은 모듈을 사용하여 확장 할 수 있습니다.
.NET를 설치하십시오
자세한 내용은 여기를 참조하십시오. .NET 8 이상이 필요합니다.
프로그램을 얻으십시오
이진 파일을 얻으려면 다운로드하거나 빌드 할 수 있습니다.
실행 프로그램
바이너리 폴더에서 ./E5Renewer 실행해야합니다.
뒷받침되는 주장은 다음과 같습니다.
--systemd : SystemD 환경에서 실행되면 대부분 필요하지 않아야합니다.--user-secret : 사용자 비밀 파일의 경로.--token : JSON API에 액세스하는 문자열.--token-file : 첫 번째 줄은 토큰으로 사용되는 파일입니다.--listen-unix-socket-permission : Unix 도메인 소켓 파일에 대한 권한. 우리는 기본적으로 endpoint http://127.0.0.1:5000 에서들을 것입니다. 이것은 asp.net core의 기본값입니다.
asp.net core는 --urls=http://127.0.0.1:5001 또는 --urls=http://unix:/path/to/socket 같은 사용자 정의 청취 엔드 포인트를 설정하기 위해 --urls 매개 변수를 지원합니다. UNIX Domain Socket 파일의 권한은 argument --listen-unix-socket-permission 로 사용자 정의 할 수 있습니다.
이러한 사용자 정의 된 인수는 실제로 ASP.NET Core 구성 항목이며 항목 이름은 인수의 TitleCase입니다. 예를 들어, --token Token 에 매핑되며 --user-secret UserSecret 에 매핑되며 --listen-unix-socket-permission ListenUnixSocketPermission 에 매핑됩니다. 이 변환 맵을 사용하면 JSON 구성, 환경 변수 등과 같은 ASP.NET Core의 제공 방법을 사용할 수 있지만 특별한 경우가 있습니다. --systemd 는 --systemd Systemd=true 제공해야합니다. 이러한 사용자 정의 된 인수에는 -s , -u 와 같은 짧은 형식이 없습니다.
NullReferenceException --user-secret ASP.NET Core userSecret 값을 제공하기 위해 모든 방법을 통해 제공되어야합니다.
메모
--token 과 --token-file 둘 다 지정되면 --token 선호합니다. 당신이 그들 중 어느 것도 설정하지 않는 것을 잊어 버린 경우, 우리는 무작위로 생성 된 값을 사용합니다. 프로그램에 요청을 보내고 인증 오류를 충족 한 후 로그 출력에서 찾을 수 있습니다.
중요한
UNIX 소켓 허가를 설정하려면 Octal 형식 대신 실제 값을 작성해야합니다. 예를 들어, 511 사용하여 대신 777 필요합니다.
dotnet publish -c Release 실행하면 E5Renewer/bin/Release/net8.0/publish 에서 Binary Binary를 얻을 수 있습니다.
curl 또는 HTTP 요청을 보낼 수있는 도구를 사용하여 http://127.0.0.1:5000 과 같은 엔드 포인트로 요청을 보내거나 Unix Socket /path/to/socket 보내려면 각 요청은 헤더 Authorization: Bearer <auth_token> 과 함께 보내야합니다. 모든 것이 괜찮다면 JSON 응답을 얻을 수 있습니다. GET 요청 인 경우 쿼리 Param timestamp 에서 밀리 초 타임 스탬프를 보내십시오. 게시물 요청 인 경우 Post JSON에서 Milisecond Timestamp를 키 timestamp 로 보내어 문자열로 변환하십시오. 대부분의 경우, 우리는 대신 JSON 대신 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를 확인할 수 있습니다.