本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用模擬角色
若要存取信箱資料,請使用 Amazon WorkMail API 動作AssumeImpersonationRole
。如需有關亞馬遜 WorkMail API 的詳細資訊,請參閱 API 參考資料。
AssumeImpersonationRole
返回一個Token
。這Token
必須在 15 分鐘內透過 HTTP 標頭傳遞至 EWS 通訊協定Authorization
。
下列範例示範如何搭配 EWS 通訊協定使用模擬角色。範例中使用的常數會指定下列組織與帳戶專屬的詳細資訊:
— 亞馬遜 WorkMail 組織 IDWORKMAIL_ORGANIZATION_ID
— 模擬角色 IDIMPERSONATION_ROLE_ID
— 可在亞馬遜端點和配額上使用的 EWS WorkMail 端點WORKMAIL_EWS_URL
— 使用者信箱的電子郵件地址EMAIL_ADDRESS
範例 爪哇 — EWS 爪哇 API
import software.amazon.awssdk.services.workmail.WorkMailClient; import software.amazon.awssdk.services.workmail.model.AssumeImpersonationRoleRequest; import software.amazon.awssdk.services.workmail.model.AssumeImpersonationRoleResponse; import microsoft.exchange.webservices.data.core.ExchangeService; import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion; import microsoft.exchange.webservices.data.misc.ImpersonatedUserId; import microsoft.exchange.webservices.data.core.enumeration.misc.ConnectingIdType; // ... AssumeImpersonationRoleResponse response = workMailClient.assumeImpersonationRole( AssumeImpersonationRoleRequest.builder() .organizationId(WORKMAIL_ORGANIZATION_ID
) .impersonationRoleId(IMPERSONATION_ROLE_ID
) .build()); ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2010_SP2); exchangeService.setUrl(URI.create(WORKMAIL_EWS_URL
)); exchangeService.getHttpHeaders().put("Authorization", "Bearer " + response.token()); exchangeService.setImpersonatedUserId(new ImpersonatedUserId(ConnectingIdType.SmtpAddress,EMAIL_ADDRESS
));
範例 。淨-EWS 託管的 API 。
using Amazon.WorkMail; using Amazon.WorkMail.Model; using Microsoft.Exchange.WebServices.Data; // ... AssumeImpersonationRoleRequest request = new AssumeImpersonationRoleRequest(); request.OrganizationId =WORKMAIL_ORGANIZATION_ID
; request.ImpersonationRoleId =IMPERSONATION_ROLE_ID
; AssumeImpersonationRoleResponse response = workMailClient.AssumeImpersonationRole(request); ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); service.Url = new Uri(WORKMAIL_EWS_URL
); service.HttpHeaders.Add("Authorization", "Bearer " + response.Token); service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress,EMAIL_ADDRESS
);
範例 蟒蛇-交換
import boto3 from requests.auth import AuthBase from exchangelib.transport import AUTH_TYPE_MAP from exchangelib import Configuration, Account, Version, IMPERSONATION from exchangelib.version import EXCHANGE_2010_SP2 work_mail_client = boto3.client("workmail") class ImpersonationRoleAuth(AuthBase): def __init__(self): self.token = work_mail_client.assume_impersonation_role( OrganizationId=WORKMAIL_ORGANIZATION_ID
, ImpersonationRoleId=IMPERSONATION_ROLE_ID
)["Token"] def __call__(self, r): r.headers["Authorization"] = "Bearer " + self.token return r AUTH_TYPE_MAP["ImpersonationRoleAuth"] = ImpersonationRoleAuth ews_config = Configuration( service_endpoint=WORKMAIL_EWS_URL
, version=Version(build=EXCHANGE_2010_SP2), auth_type="ImpersonationRoleAuth" ) ews_account = Account( config=ews_config, primary_smtp_address=EMAIL_ADDRESS
, access_type=IMPERSONATION )