翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
なりすましロールを使用する
メールボックスのデータにアクセスするには、Amazon WorkMail API アクションAssumeImpersonationRoleを使用します。Amazon WorkMail API の詳細については、「API リファレンス」を参照してください。
AssumeImpersonationRole は Token を返します。この Token は、HTTP ヘッダー Authorization を介して 15 分以内に EWS プロトコルに渡す必要があります。
次の例では、EWS プロトコルでなりすましロールを使用する方法を示します。例で使用されている定数は、組織とアカウントに固有の次の詳細を指定します。
- Amazon WorkMail 組織 IDWORKMAIL_ORGANIZATION_ID— なりすましロール IDIMPERSONATION_ROLE_ID— Amazon WorkMail エンドポイントとクォータで利用可能な EWS エンドポイントWORKMAIL_EWS_URL— ユーザーメールボックスのメールアドレスEMAIL_ADDRESS
例 Java — EWS Java 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));例 .Net – EWS Managed 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);
例 Python – Exchangelib
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
)