Spring Boot Microservice SBank example(Eureka Server, Config Server, API Gateway, Services , Kafka, Keycloak)
![](https://private-user-images.githubusercontent.com/86996284/334547055-c0f37006-92b0-49b7-b583-eb05dbdd1635.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzQ1NDcwNTUtYzBmMzcwMDYtOTJiMC00OWI3LWI1ODMtZWIwNWRiZGQxNjM1LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUyNTMzYjUxODYxNTMxODE3ZjllYWZhOTdkYmY3NDE0ZjAzMTkwYmM3YmY3MmFkMGU5OTUyOGI5Yjk0N2NiMGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rfO9V2jMDmCTlGACSBR7wqMkXru9yxNZm_yh9Yd2TuA)
- User can't register himself (not implemented yet) but you can add users using the KeyCloak console and login through Keycloak
- It's possible to give ROLEs to the users
- Admin can approve and reject advertisement from advertisement service to report service by using management service through API Gateway
- User can create/update/delete/fetch account details including card, loan details, through API Gateway
- User can create/update/delete/fetch card details, through API Gateway
- User can create/update/delete/fetch loan details, through API Gateway
7 services whose name are shown below have been devised within the scope of this project.
- Config Server
- Eureka Server
- API Gateway
- Account Service
- Card Service
- Loan Service
- Message Service
Explore Rest APIs
Method | Url | Description | Valid Request Body | Valid Request Params | Valid Request Params and Body | No Request or Params |
---|---|---|---|---|---|---|
POST | /create | Create Account | Info | |||
POST | /create?mobileNumber={mobileNumber} | Create Card for Client | Info | |||
POST | /create?mobileNumber={mobileNumber} | Create Loan for Client | Info | |||
GET | /fetchCustomerDetails?mobileNumber={mobileNumber} | Fetch Customer details based on a mobile number | Info | |||
GET | /build-info | Get Build information (implemented Retry pattern - Recilience4j) | Info | |||
GET | /java-version | Get Java versions details (implemented Redis RateLimiter - Recilience4j) | Info | |||
GET | /contact-info | Contact info details | Info | |||
GET | /fetch?mobileNumber={mobileNumber} | Fetch card details based on a mobile number | Info | |||
GET | /fetch?mobileNumber={mobileNumber} | Fetch loan details based on a mobile number | Info | |||
PUT | /update | Update Customer & Account details | Info | |||
PUT | /update | Update card details | Info | |||
PUT | /update | Update loan details | Info | |||
DELETE | /delete?mobileNumber{mobileNumber} | Delete Customer & Account details based on the mobile number | Info | |||
DELETE | /delete?mobileNumber{mobileNumber} | Delete Card details based on a mobile number | Info | |||
DELETE | /delete?mobileNumber{mobileNumber} | Delete Loan details based on a mobile number | Info |
- Core
- Spring
- Spring Boot
- Spring Security
- Spring Web
- Spring Data
- Spring Data JPA
- Spring Cloud
- Spring Cloud Gateway Server
- Spring Cloud Config Server
- Spring Cloud Config Client
- OpenFeign
- Netflix
- Eureka Server
- Eureka Client
- Spring
- Database
- Mysql
- Message Broker
- Kafka
- Security
- Keycloak Server
- Keycloak OAuth2
- Keycloak REST API
http://localhost:8072/sbank/accounts/api/create
Bearer Token : Access Token from Keycloak
{
"name": "Kirill Yud",
"email": "kirsing98@gmail.com",
"mobileNumber": "3754478543"
}
http://localhost:8072/sbank/accounts/api/update
Bearer Token : Access Token from Keycloak
{
"name": "Kirill Yud",
"email": "kirsing98@gmail.com",
"mobileNumber": "4354437687",
"accountsDto": {
"accountNumber": 1105557729,
"accountType": "Savings",
"branchAddress": "123 Main Street, New York"
}
http://localhost:8072/sbank/cards/api/cards/update
Bearer Token : Access Token from Keycloak
{
"mobileNumber": "3754478543",
"cardNumber": "100107091026",
"cardType": "Debit Card",
"totalLimit": 100000,
"amountUsed": 10000,
"availableAmount": 90000
}
http://localhost:8072/sbank/loans/api/loans/update
Bearer Token : Access Token from Keycloak
{
"mobileNumber": "3754478543",
"loanNumber": "10071469799154",
"loanType": "House Loan",
"totalLoan": -100000,
"amountPaid": -10000,
"outstandingAmount": -90000
}
http://localhost:8072/eazybank/accounts/api/fetchCustomerDetails?mobileNumber={mobileNumber}
Bearer Token : Not required
http://localhost:8072/sbank/cards/api/cards/fetch?mobileNumber={mobileNumber}
Bearer Token : Not required
http://localhost:8072/sbank/loans/api/loans/fetch?mobileNumber={mobileNumber}
Bearer Token : Not required
http://localhost:8072/eazybank/accounts/api/delete?mobileNumber={mobileNumber}
Bearer Token : Access Token from Keycloak
http://localhost:8072/sbank/cards/api/cards/delete?mobileNumber={mobileNumber}
Bearer Token : Access Token from Keycloak
http://localhost:8072/sbank/loans/api/loans/delete?mobileNumber={mobileNumber}
Bearer Token : Access Token from Keycloak
http://localhost:8072/sbank/cards/api/cards/create?mobileNumber={mobileNumber}
Bearer Token : Access Token from Keycloak
http://localhost:8072/sbank/loans/api/loans/create?mobileNumber={mobileNumber}
Bearer Token : Access Token from Keycloak
http://localhost:8072/sbank/accounts/api/build-info
Bearer Token : Not Required
http://localhost:8072/sbank/accounts/api/java-version
Bearer Token : Not Required
http://localhost:8072/sbank/accounts/api/contact-info
Bearer Token : Not Required
1 ) Download your project from this link https://github.com/kirsing/sbank
2 ) Go to the project's home directory : cd ~/sbank-main
Docker
1 ) Install Docker Desktop. Here is the installation https://www.docker.com/get-started/
2 ) Go to the specific directory: cd ~/sbank-main/docker-compose/prod
3 ) Run all Containers through this command - docker compose up -d
Kubernetes
1 ) Install minikube or enable Kubernetes on Docker Desktop
2 ) Install Helm https://helm.sh/docs/intro/quickstart/
3 ) Go to the directory : cd ~/sbank-main/helm/environments/
4 ) Install all Helm Charts using Helm through this command
helm install <your-application-name> dev-env
export HTTP_SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[?(@.name=='http')].port}" services keycloak)
export SERVICE_IP=$(kubectl get svc --namespace default keycloak -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "http://${SERVICE_IP}:${HTTP_SERVICE_PORT}/"
echo Username: user
echo Password: $(kubectl get secret --namespace default keycloak -o jsonpath="{.data.admin-password}" | base64 -d)
echo "Prometheus URL: http://127.0.0.1:9090/"
kubectl port-forward --namespace default svc/prometheus-kube-prometheus-prometheus 9090:9090
echo "Browse to http://127.0.0.1:8080"
kubectl port-forward svc/grafana 8080:3000 &
echo "User: admin"
echo "Password: $(kubectl get secret grafana-admin --namespace default -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 -d)"
1 ) Open Keycloak on the Browser through localhost:7080
2 ) Enter username and password (admin : admin)
![](https://private-user-images.githubusercontent.com/86996284/335363191-f784b52b-95b1-4e2a-a6ea-468620a29418.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNjMxOTEtZjc4NGI1MmItOTViMS00ZTJhLWE2ZWEtNDY4NjIwYTI5NDE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIyOTA0ZTlhZTU2OTM4NGQ3ODBkMWI0MjM4ODAwZGFkZTk0YTZiZmI5ZjJkZGJlN2Q4YmYzNWExOWU5MTViNzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PBk7JT9PG_MGqvNDRUsxbmZvhoK51gStZBN1gaD9ulw)
Create Client
![](https://private-user-images.githubusercontent.com/86996284/335364540-36470979-6624-47e4-b3df-de5db877e236.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNjQ1NDAtMzY0NzA5NzktNjYyNC00N2U0LWIzZGYtZGU1ZGI4NzdlMjM2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMxZjFkMmNmMGYyOGU4MWVhMTA0NTk1YjhiM2NmZTMwZGQ4NmRmOWYyOTE3ZGNmMmUzZGRkODVjOTk4NzI5OTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.S6G66o0QlFP1TrxS6xNYzc3PVO8CkMqj_56PcpoFsIs)
![](https://private-user-images.githubusercontent.com/86996284/335367464-e324d8e5-f135-45bb-8524-1ce1d98a433c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNjc0NjQtZTMyNGQ4ZTUtZjEzNS00NWJiLTg1MjQtMWNlMWQ5OGE0MzNjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEyOGFhYWFiMTRjYjNhZjJjNzg3NDVjNThhYzM0ZTAwYWFmODJjNmEyNDFlOWZjMWUwMmUwZWIxYTc0MjAyZTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.NY51aclKYgyFkTe_e9QoN4_9-QBGBYbRgDdfbO0LC9Q)
![](https://private-user-images.githubusercontent.com/86996284/335367819-fefdde7e-3356-4f42-9e02-18c221d9d0a1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNjc4MTktZmVmZGRlN2UtMzM1Ni00ZjQyLTllMDItMThjMjIxZDlkMGExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVlNmRhNmZlYTdjMWY2ZTBmYjY0YThkZjNkNzQ0ZjllNjQxYTIxZGVkY2Y2YTQ2MTYzYjUxNzRjZDY2NTYxMTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.helCAF_GftkVEO6pBuW_-CsLPN0s65MuJ3OUFFffa94)
![](https://private-user-images.githubusercontent.com/86996284/335367989-e51ae88d-0f2e-4758-99d0-203cfb4659bb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNjc5ODktZTUxYWU4OGQtMGYyZS00NzU4LTk5ZDAtMjAzY2ZiNDY1OWJiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJhOTRkOGY0ZGJmNDYwOThmMmFjNzJkYWI5Y2U4YjRlZDIwNWQ1ZjIyNzk3N2Q3OTFlN2M4YzhlOGE1MDczZjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.eocspMzoollbLAsIN29QxFwu0Rdnm1MHWoeFHZCLLiY)
Save client secret
![](https://private-user-images.githubusercontent.com/86996284/335368262-9715e531-e0af-4deb-8bc7-1b4860687d95.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNjgyNjItOTcxNWU1MzEtZTBhZi00ZGViLThiYzctMWI0ODYwNjg3ZDk1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI2ODliYzlkYjdlMzMxM2JjZTI4NmRjZmY1NDg0MjYxODZhMmJlY2ZkMzVjZGZmMGQ3NDRmMjUwOWM2MDRmMTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ow6agcM2h8GdK1HHyCEffvwzVWFIpMOkN6snSkM_hEE)
Create ROLES: ACCOUNTS, CARDS, LOANS
![](https://private-user-images.githubusercontent.com/86996284/335369469-ad99ed7b-d608-4bcb-8848-583dd67a22d8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNjk0NjktYWQ5OWVkN2ItZDYwOC00YmNiLTg4NDgtNTgzZGQ2N2EyMmQ4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI4NzA4ZmJlOTIxNDZlMTFhNThiZTdlODFjYmIyMDI1MTI1ZTdkMTJhOWFiZWRiMDdlMTczOTg5YzA1NzU5ZmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.7RGPVRjXUYQqCOGhBG_jdSKoaQVP3OMGLOWW1nzNN2I)
Create users
![](https://private-user-images.githubusercontent.com/86996284/335370213-27de10e8-6ffa-4afe-b84d-145d0d691786.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNzAyMTMtMjdkZTEwZTgtNmZmYS00YWZlLWI4NGQtMTQ1ZDBkNjkxNzg2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI3YWNlMTJkNGZiMjg2MjBkMTBlYmVlMDdmZjY5ZmI0NjA2MTdiMjI2OTkyYjRkM2Y4NTNiMTg5N2VkMzE4ZmEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.gKDPQub2Kv2bFhOLpdZo5pMcQIxqhg68uOB26ISg-oA)
![](https://private-user-images.githubusercontent.com/86996284/335370468-a138332b-0b72-45b1-b880-17fe473510e7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNzA0NjgtYTEzODMzMmItMGI3Mi00NWIxLWI4ODAtMTdmZTQ3MzUxMGU3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMxY2NiZjU1YmY4MzE1YjEyMDE2ZDRiZTUwODU0N2NlYzg3ODA5YThiMDM1MTFjZjQ5OWEwNDIyMzRhNWU4ZmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.7rMJ9h7XAxfP8-c75rNqHUt0lqESgCmS2SJMhc8_s2w)
![](https://private-user-images.githubusercontent.com/86996284/335370650-d505f874-3450-4e21-bfb2-90efb1122a2a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNzA2NTAtZDUwNWY4NzQtMzQ1MC00ZTIxLWJmYjItOTBlZmIxMTIyYTJhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA4ZTRhMmQ2OGJjZDk2YzY0ZDYxZjU2MzcwMDVjMDhjMmQwYWIxMWI4NTgwNmMwNTAxYjMwYmIzMGNkNjRhNDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.vcQzGEaflG7nZWwftBBOltCg2CuSFcrGfMawMre1RkI)
Assign ROLE to the user
![](https://private-user-images.githubusercontent.com/86996284/335370934-d3b12ca2-ab61-4aa0-8b88-8dd7a4915415.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNzA5MzQtZDNiMTJjYTItYWI2MS00YWEwLThiODgtOGRkN2E0OTE1NDE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ3OTkxNzIxNjRhOWUwZWI0OTRlYWZjMjVmODExYWM4NjIzZGE2Y2RhZTJkOGYwMjk0NzVmMWVkNjNhYmQxZWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.bqeZCNHp4QawjYTcL_bhwYNa1_AYMYT_oRH9JJLqG_k)
![](https://private-user-images.githubusercontent.com/86996284/335371273-439e2228-df83-4320-afed-f929d497f792.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzUzNzEyNzMtNDM5ZTIyMjgtZGY4My00MzIwLWFmZWQtZjkyOWQ0OTdmNzkyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg2NzFjZTc0MWI4M2QxZWFlYzhhMDc0MDY5Y2MyOWRiYjFjZjg2YTEzMzdlMDkyZGMzNWIzM2RkZDBlOTVlYTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rpgIwlkIonxmg3PL44-HVIwvPv3_uFjyjKcPyFtv1Wg)
![](https://private-user-images.githubusercontent.com/86996284/335862354-7a258947-7c39-4edd-9f87-1c4929542115.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzU4NjIzNTQtN2EyNTg5NDctN2MzOS00ZWRkLTlmODctMWM0OTI5NTQyMTE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY1NDY4NDdiY2U3YjQ4YzE4OGZkN2JkZGZjZjBjNGRkYTkwMTA5N2VkYTU5MGRlNDRhZjg3NDU2YWZmODc2MjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.OAJ23vj_nNV29I5qIUEul9355N-DFZLw_7J6sA0zy_M)
![](https://private-user-images.githubusercontent.com/86996284/335862417-3cc116c9-5d06-4903-bc09-94a67afedb0e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzU4NjI0MTctM2NjMTE2YzktNWQwNi00OTAzLWJjMDktOTRhNjdhZmVkYjBlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFlYjFlMzcxMDA0ZmJmNWU4YTU4MDVhYzhiZjY4Y2UwMWUwODQ4Yjg4YmM1YmY3YWI2N2Q0YzFlMmEyMGU5YmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PWow_8kzepjjvO8CGWbMm7UiQp061YZPltT_e0tQJUE)
![](https://private-user-images.githubusercontent.com/86996284/335862449-cefac094-71dc-4d3d-a83b-2a5be59abda8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM3NTg3MjAsIm5iZiI6MTcyMzc1ODQyMCwicGF0aCI6Ii84Njk5NjI4NC8zMzU4NjI0NDktY2VmYWMwOTQtNzFkYy00ZDNkLWE4M2ItMmE1YmU1OWFiZGE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE1VDIxNDcwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFmNWE0ZmM1YWU2MWZiODNmNmIxNTdjMDE0OGM5NGI1MmNkOWU1OThjYmE3YWMyMDFlZmFjMzFlZWMyNzNiYmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Fo1NxluvoHio8Nf2AI0Via75H6crT599RsE1R6Tww18)
Get Access Token via Client Credentials GRANT FLOW
Get Access Token via Authorize Code GRANT FLOW
"State section" consists of your random symbols/numbers