diff --git a/docker-compose.yml b/docker-compose.yml
index 688177c2cddff8f8083dc6ce2a208ed6819905b7..23c5985f76ae4ec6192cff54eb9aa75a108242ce 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -118,6 +118,21 @@ services:
       keycloak:
         condition: service_healthy
 
+  login:
+    container_name: login
+    build:
+      context: $GOPATH/src/gitlab.com/gaia-x/data-infrastructure-federation-services/tsa/login
+      dockerfile: deployment/compose/Dockerfile
+    volumes:
+      - "$GOPATH/src/gitlab.com/gaia-x/data-infrastructure-federation-services/tsa/login:/go/src/gitlab.com/gaia-x/data-infrastructure-federation-services/tsa/login"
+    env_file:
+      - ./env/login.env
+    ports:
+      - "8087:8080"
+    depends_on:
+      policy:
+        condition: service_started
+
   didresolver:
     container_name: didresolver
     hostname: didresolver
@@ -225,3 +240,9 @@ services:
       start_period: 5s
     ports:
       - "8500:8080"
+
+  mailhog:
+    image: jcalonso/mailhog
+    ports:
+      - "1025:1025" # smtp server
+      - "8025:8025" # web ui
\ No newline at end of file
diff --git a/env/login.env b/env/login.env
new file mode 100644
index 0000000000000000000000000000000000000000..9f33b6f7177d0e4b020b1704eba67c5b069d0a2e
--- /dev/null
+++ b/env/login.env
@@ -0,0 +1,67 @@
+LOG_LEVEL="debug"
+HTTP_HOST=""
+HTTP_PORT="8080"
+HTTP_IDLE_TIMEOUT="120s"
+HTTP_READ_TIMEOUT="10s"
+HTTP_WRITE_TIMEOUT="10s"
+POLICY_ADDR="http://policy:8080"
+LINK_LOCATION="https://example.com"
+MAIL_ADDR="mailhog:1025"
+MAIL_USER=""
+MAIL_PASS=""
+MAIL_FROM="no-reply@vereign.com"
+TOKEN_ISSUER="https://example.com"
+TOKEN_AUDIENCE="https://example.com"
+TOKEN_EXPIRATION="1h"
+
+PUBLIC_KEY_RSA="-----BEGIN PUBLIC KEY-----
+MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEApqjP9IEYtGdGNAEawn/b
+GoyM6iHxOvs7yFhbHmOUZGMgiaviv4/IPq2BtZEL82bxO5NZSXNlpS++bG8QCmPd
+Pn5UTdtkH1MYhobqbraPq5EwzmLsOBc74dDNySoYOyPIm8afEHYGZdIYTygvANQa
+9b+VuRab5COvYw9gMoV6CBIke4VN7pMlZcwDoTO4P4y291tywIeBq6j0X4n4k7k5
+Gh20NxKrmncyH8gwCW1MX2Q6kuTCJDswxnIc4fudhDQnggDyGBGOzAc9b15zJBgB
+ym54BK9jhbJ5ce2QvA7ELrcKxZOeUKXDaKzlonFPcNTyQ0Nq6IRUWlO0wty5jjcr
+CRh1rsXUNis/gNnUWXs8DokuOf0A74Qqfs7sipF5EttkTY3D5hnMxfrfidphJHd3
+7nuxQCRBW1oE4zsNtU/RG8Twi+RVmg0DpsCD1f+9MIrnUMjOr98wFoNvp1d4arvS
+fqui3vhSCmCG5PzTaJ08gJFj1UnSusrp2WcnQmwoUOVZAgMBAAE=
+-----END PUBLIC KEY-----"
+
+PRIVATE_KEY_RSA="-----BEGIN RSA PRIVATE KEY-----
+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
+-----END RSA PRIVATE KEY-----"