OKTA SAML nodejs TypeScript starter repository for DHS.
Nest nodejs backend framework.
Okta for SAML.
$ pnpm install
# development
$ pnpm run start
# watch mode
$ pnpm run start:dev
# production mode
$ pnpm run start:prod
# docker
$ docker compose up -d
openssl genrsa -out oktapk.key 2048
openssl req -new -key oktapk.key -out servercert.csr
openssl x509 -req -days 3650 -in servercert.csr -signkey oktapk.key -out dhscert.crt
http://localhost:3000/auth/meta
Make sure to add config folder in the root directory of project and store cert and private key, refer saml.strategy.ts
DHS OKTA will generate a 509 certificate with an entity Id and IDP entry point. Please ensure that the application callback URL is passed, as it will be called after a successful authentication request. A SAML response will then be generated with user information.
Create .env file in the project with following keys and provide valid information
# public cert
SAML_SERVER_PUBLIC_CERT=<PLACEHOLDER>
# private key
SAML_SERVER_PRIVATE_KEY=<PLACEHOLDER>
# entry point
OKTA_SAML_ENTRY_POINT=<PLACEHOLDER>
# issuer
OKTA_SAML_ISSUER=<PLACEHOLDER>
# app callback url
OKTA_SAML_CALLBACK_URL=<PLACEHOLDER>
After starting the application navigate to http://localhost:3000/ will display page with login button.
Submit action should take to DHS SSO OKTA application for the authentication.
![image](https://private-user-images.githubusercontent.com/160953871/307184613-c7609198-afb7-43f4-9f49-924890acdeeb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMyNjQxMDUsIm5iZiI6MTcyMzI2MzgwNSwicGF0aCI6Ii8xNjA5NTM4NzEvMzA3MTg0NjEzLWM3NjA5MTk4LWFmYjctNDNmNC05ZjQ5LTkyNDg5MGFjZGVlYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxMFQwNDIzMjVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zM2NhNGU0YjM0YmI5OTMzYTliZTJjZDE5ZjZmOTY5NjUxMjc4ZWIwYzUxNjA2YjA5Y2U5ZDgzODQ4MGU3YzY1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.J_nBJWKqj8vAgM5xCFVMvf6jDbfZzk8mWLVDs6VW7oc)