この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ども、大瀧です。
ALBでサポートされたOpenID Connect認証は設定する項目が多いので、設定をコピーするためにAWS CLIを使おうとしたらハマったので共有します。
DescribeRules APIのレスポンスにはClientSecretが含まれない
既存の設定を出力するDescribeRules APIのレスポンスでは、見出しの通りClientSecretが取り除かれます。AWS CLIで実行した例を示します。
$ aws elbv2 describe-rules \
--rule-arn arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:listener-rule/app/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX
{
"Rules": [
{
"Priority": "29",
"Conditions": [
{
"Field": "host-header",
"Values": [
"endpoint1.example.com"
]
}
],
"RuleArn": "arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:listener-rule/app/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX",
"IsDefault": false,
"Actions": [
{
"AuthenticateOidcConfig": {
"OnUnauthenticatedRequest": "authenticate",
"TokenEndpoint": "https://auth.example.com/oauth/token",
"ClientId": "client1",
"SessionTimeout": 604800,
"AuthorizationEndpoint": "https://auth.example.com/oauth/authorize",
"Scope": "root",
"SessionCookieName": "AWSELBAuthSessionCookie",
"UserInfoEndpoint": "https://auth.example.com/userinfo",
"Issuer": "https://auth.example.com"
},
"Type": "authenticate-oidc",
"Order": 1
},
{
"TargetGroupArn": "arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:targetgroup/tg1/XXXXXXXXXXXX",
"Type": "forward",
"Order": 2
}
]
}
]
}
$
このため、レスポンスのRules[].Actions[].AuthenticateOidcConfig
辺りをModifyRule APIのリクエストに流用しようとするとエラーになります。
$ aws elbv2 modify-rule --actions '(略)' \
--rule-arn arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:listener-rule/app/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX
Parameter validation failed:
Missing required parameter in Actions[1].AuthenticateOidcConfig: "ClientSecret"
$
秘匿情報の扱いとしては妥当と言えば妥当な気もしますが、改めてClientSecretを準備する点に気をつけましょう。ドキュメントには特に記述が無い点にも注意です。