AEM as a Cloud Service는 조직의 이메일 요구 사항 보호 준수를 위해 통합 메일 서비스에 대한 OAuth2 지원을 제공합니다.
여러 이메일 공급자에 대해 OAuth를 구성할 수 있습니다. 다음은 Microsoft Office 365 Outlook과 함께 OAuth2를 통해 인증할 AEM 메일 서비스를 구성하는 방법에 대한 단계별 지침입니다. 다른 공급업체가 유사한 방식으로 구성될 수 있습니다.
AEM as a Cloud Service 메일 서비스에 대한 자세한 내용은 이메일 보내기를 참조하십시오.
https://portal.azure.com/으로 이동한 다음 로그인합니다.
검색창에서 Azure Active Directory를 검색한 다음 결과를 클릭합니다. 또는 https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview에서 바로 검색할 수 있습니다.
앱 등록 - 신규 등록을 클릭합니다.
요구 사항에 따라 정보를 입력한 다음 등록을 클릭합니다.
새로 생성된 앱으로 이동하여 API 권한을 선택합니다.
권한 추가 - 그래프 권한 - 위임된 권한으로 이동합니다.
아래의 앱에 대한 권한을 선택한 다음 권한 추가를 클릭합니다.
https://graph.microsoft.com/SMTP.Send
https://graph.microsoft.com/Mail.Read
https://graph.microsoft.com/Mail.Send
https://graph.microsoft.com/User.Read
openid
offline_access
email
profile
https://outlook.office365.com/SMTP.Send
인증 - 플랫폼 추가 - 웹으로 이동한 다음 리디렉션 URL 섹션에서 슬래시가 있는 URL과 슬래시가 없는 URL을 추가합니다.
http://localhost/
http://localhost
각 URL을 추가한 후 구성을 눌러 요구 사항에 따라 설정을 구성합니다.
그런 다음 증명서 및 보안으로 이동하고 신규 클라이언트 보안을 클릭한 후 화면에 표시되는 단계에 따라 보안을 생성합니다. 나중에 사용할 수 있도록 이러한 보안 내용을 메모해 두십시오.
왼쪽 창에서 개요를 누르고 나중에 사용할 수 있도록 애플리케이션(클라이언트) ID 및 디렉터리(테넌트) ID의 값을 복사합니다.
재점검하려면 AEM측의 메일 서비스에 대한 OAuth2 구성에 대한 다음 정보가 필요합니다.
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
그런 다음 후속 단계에서 OSGi 구성의 일부가 되는 새로 고침 토큰을 생성해야 합니다.
다음 단계를 따라 이 작업을 수행할 수 있습니다.
clientID
및 tenantID
를 계정과 관련된 값으로 바꾼 후 브라우저에서 다음 URL을 엽니다. https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize?client_id=<clientId>&response_type=code&redirect_uri=http://localhost&response_mode=query&scope=https://graph.microsoft.com/SMTP.Send https://graph.microsoft.com/Mail.Read https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/User.Read email openid profile offline_access&state=12345
메시지가 표시되면 권한을 허용합니다.
해당 URL은 다음 형식으로 구성된 새 위치로 리디렉션합니다. http://localhost/?code=<code>&state=12345&session_state=4f984c6b-cc1f-47b9-81b2-66522ea83f81#
위 예의 <code>
값을 복사합니다.
다음 cURL 명령을 사용하여 refreshToken을 가져옵니다. <code>
값과 tenantID, clientID 및 clientSecret을 계정에 대한 값으로 교체해야 합니다.
curl --location --request POST 'https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: buid=0.ARgAep0nU49DzUGmoP2wnvyIkcQjsx26HEpOnvHS0akqXQgYAAA.AQABAAEAAAD--DLA3VO7QrddgJg7Wevry9XPJSKbGVlPt5NWYxLtTl3K1W0LwHXelrffApUo_K02kFrkvmGm94rfBT94t25Zq4bCd5IM3yFOjWb3V22yDM7-rl112sLzbBQBRCL3QAAgAA; esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr4a8wBjYcNbBXRievdTOd15caaeAsQdXeBAQA3tjVQaxmrOXFGkKaE7HBzsJrzA-ci4RRpor-opoo5gpGLh3pj_iMZuqegQPEb1V5sUVQV8_DUEbBv5YFV2eczS5EAhLBAwAd1mHx6jYOL8LwZNDFvd2-MhVXwPd6iKPigSuBxMogAA; x-ms-gateway-slice=estsfd; stsservicecookie=estsfd; fpc=Auv6lTuyAP1FuOOCfj9w0U_5vR5dAQAAALDXP9gOAAAAwIpkkQEAAACT2T_YDgAAAA' \
--data-urlencode 'client_id=<clientID>' \
--data-urlencode 'scope=https://graph.microsoft.com/SMTP.Send https://graph.microsoft.com/Mail.Read https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/User.Read email openid profile offline_access https://outlook.office365.com/SMTP.Send' \
--data-urlencode 'redirect_uri=http://localhost' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'client_secret=<clientSecret>' \
--data-urlencode 'code=<code>'
refreshToken 및 accessToken을 기록해 두십시오.
AEM측의 OAuth 구성을 진행하기에 앞서 아래 절차에 따라 accessToken 및 refreshToken을 확인하십시오.
이전 절차에서 생성된 refreshToken을 사용하여 accessToken을 생성합니다. 다음 cURL을 통해 <client_id>
, <client_secret>
및 <refreshToken>
의 값을 교체하여 이를 저장할 수 있습니다.
curl --location --request POST 'https://login.microsoftonline.com/<tenetId>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: buid=0.ARgAep0nU49DzUGmoP2wnvyIkcQjsx26HEpOnvHS0akqXQgYAAA.AQABAAEAAAD--DLA3VO7QrddgJg7Wevry9XPJSKbGVlPt5NWYxLtTl3K1W0LwHXelrffApUo_K02kFrkvmGm94rfBT94t25Zq4bCd5IM3yFOjWb3V22yDM7-rl112sLzbBQBRCL3QAAgAA; esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevr4a8wBjYcNbBXRievdTOd15caaeAsQdXeBAQA3tjVQaxmrOXFGkKaE7HBzsJrzA-ci4RRpor-opoo5gpGLh3pj_iMZuqegQPEb1V5sUVQV8_DUEbBv5YFV2eczS5EAhLBAwAd1mHx6jYOL8LwZNDFvd2-MhVXwPd6iKPigSuBxMogAA; x-ms-gateway-slice=estsfd; stsservicecookie=estsfd; fpc=Auv6lTuyAP1FuOOCfj9w0U_IezHLAQAAAPeNSdgOAAAA' \
--data-urlencode 'client_id=<client_id>' \
--data-urlencode 'scope=https://graph.microsoft.com/SMTP.Send https://graph.microsoft.com/Mail.Read https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/User.Read email openid profile offline_access https://outlook.office365.com/SMTP.Send' \
--data-urlencode 'redirect_uri=http://localhost' \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode 'client_secret=<client_secret>' \
--data-urlencode 'refresh_token=<refreshToken>'
제대로 작동하는지 확인하려면 accessToken을 사용하여 메일을 전송하십시오.
다음 구문을 사용하여 /apps/<my-project>/osgiconfig/config
아래에 com.day.cq.mailer.oauth.impl.OAuthConfigurationProviderImpl.cfg.json
이라는 OSGi 속성 파일을 생성합니다.
{
authUrl: "<Authorization Url>",
tokenUrl: "<Token Url>",
clientId: "<clientID>",
clientSecret: "$[secret:SECRET_SMTP_OAUTH_CLIENT_SECRET]",
scopes: [
"scope1",
"scope2"
],
authCodeRedirectUrl: "http://localhost",
refreshUrl: "<Refresh token Url>",
refreshToken: "$[secret:SECRET_SMTP_OAUTH_REFRESH_TOKEN]"
}
이전 섹션에 설명된 바와 같이 authUrl
, tokenUrl
및 refreshURL
을 구성하여 입력합니다.
구성에 다음 범위를 추가합니다.
https://graph.microsoft.com/SMTP.Send
https://graph.microsoft.com/Mail.Read
https://graph.microsoft.com/Mail.Send
https://graph.microsoft.com/User.Read
openid
offline_access
email
profile
https://outlook.office365.com/SMTP.Send
다음 구문을 사용하여 OSGi 속성 파일 called com.day.cq.mailer.DefaultMailService.cfg.json
을
/apps/<my-project>/osgiconfig/config
아래에 생성합니다.
{
"smtp.host": "<smtp hostname>"
"smtp.user": "<user account that logged into get the oauth tokens>",
"smtp.password": "value not used",
"smtp.port": 587,
"from.address": "<from address used for sending>"
"smtp.ssl": false,
"smtp.starttls": true,
"smtp.requiretls": true,
"debug.email": false,
"oauth.flow": true
}
Outlook의 경우 smtp.host
구성 값은 smtp.office365.com
입니다.
런타임 시 여기에 설명된 바와 같이 Cloud Manager 변수 API를 사용하여 refreshToken values
및 clientSecret
보안을 전달합니다. 변수 SECRET_SMTP_OAUTH_REFRESH_TOKEN
및 SECRET_SMTP_OAUTH_CLIENT_SECRET
의 값을 정의해야 합니다.
메일 서비스가 제대로 작동하지 않는 경우 대부분의 경우 위에 설명된 바와 같이 Cloud Manager API를 통해 새 값을 전달하여 refreshToken
을 다시 생성해야 합니다. 새 값을 배포하는 데 몇 분 정도 소요됩니다.