from jinja2 import Template from moto.core.responses import BaseResponse from .models import sts_backend class TokenResponse(BaseResponse): def get_session_token(self): duration = int(self.querystring.get('DurationSeconds', [43200])[0]) token = sts_backend.get_session_token(duration=duration) template = Template(GET_SESSION_TOKEN_RESPONSE) return template.render(token=token) def get_federation_token(self): duration = int(self.querystring.get('DurationSeconds', [43200])[0]) policy = self.querystring.get('Policy', [None])[0] name = self.querystring.get('Name')[0] token = sts_backend.get_federation_token( duration=duration, name=name, policy=policy) template = Template(GET_FEDERATION_TOKEN_RESPONSE) return template.render(token=token) def assume_role(self): role_session_name = self.querystring.get('RoleSessionName')[0] role_arn = self.querystring.get('RoleArn')[0] policy = self.querystring.get('Policy', [None])[0] duration = int(self.querystring.get('DurationSeconds', [3600])[0]) external_id = self.querystring.get('ExternalId', [None])[0] role = sts_backend.assume_role( role_session_name=role_session_name, role_arn=role_arn, policy=policy, duration=duration, external_id=external_id, ) template = Template(ASSUME_ROLE_RESPONSE) return template.render(role=role) GET_SESSION_TOKEN_RESPONSE = """ AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY {{ token.expiration_ISO8601 }} AKIAIOSFODNN7EXAMPLE 58c5dbae-abef-11e0-8cfe-09039844ac7d """ GET_FEDERATION_TOKEN_RESPONSE = """ AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA== wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY {{ token.expiration_ISO8601 }} AKIAIOSFODNN7EXAMPLE arn:aws:sts::123456789012:federated-user/{{ token.name }} 123456789012:{{ token.name }} 6 c6104cbe-af31-11e0-8154-cbc7ccf896c7 """ ASSUME_ROLE_RESPONSE = """ BQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE aJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY {{ role.expiration_ISO8601 }} AKIAIOSFODNN7EXAMPLE {{ role.arn }} ARO123EXAMPLE123:{{ role.session_name }} 6 c6104cbe-af31-11e0-8154-cbc7ccf896c7 """