- 1. About
- 2. Get sample applications
- 3. Create resources in Azure
- 4. Run sample applications
- 5. Homework
This section shows the basic scenario:
- Client get access token by OAuth 2.0 authorization code flow.
- Client access resource-server by access token.
- Resource server validate the access token by validating the signature, and checking these claims: aud, nbf and exp.
Get samples applications from in GitHub: client-access-resource-server.
Read document about creating a Microsoft Entra tenant, create a new tenant. Get the tenant-id: ${TENANT_ID}.
After creating a new tenant, You can refer to README.md if you want to start the sample without the knowledge of step by step.
Read document about adding users, add a new user: user-1@${tenant-name}.com. Get the user's password.
Read document about registering an application, register an application named client-1. Get the client-id: ${CLIENT_1_CLIENT_ID}.
Read document about adding a client secret, add a client secret. Get the client-secret value: ${CLIENT_1_CLIENT_SECRET}.
Read document about adding a redirect URI, add redirect URI: http://localhost:8080/login/oauth2/code/.
Read document about registering an application, register an application named resource-server-1. Get the client-id: ${RESOURCE_SERVER_1_CLIENT_ID}.
Read document about exposing an api, expose 2 scopes for resource-server-1: resource-server-1.scope-1 and resource-server-1.scope-2, choose Admins and users for Who can consent option.
Read document about Application manifest, set accessTokenAcceptedVersion
to 2
.
- Open sample application: client, fill the placeholders in application.yml, then run the application.
- Open sample application: resource-server, fill the placeholders in application.yml, then run the application.
- Open browser(for example: Edge), close all InPrivate window, and open a new InPrivate window.
- Access http://localhost:8080, it will redirect to Microsoft login page. Input username and password (update password if it requests you to), it will return permission request page. click Accept, then it will return Hello, this is client-1.. This means we log in successfully.
- Access http://localhost:8080/resource-server-1, it will return Hello, this is resource-server-1., which means client can access resource-server.
- Read rfc6749.
- Read document about OAuth 2.0 and OpenID Connect protocols on the Microsoft identity platform.
- Read document about Microsoft identity platform and OpenID Connect protocol
- Read document about Microsoft identity platform and OAuth 2.0 authorization code flow.
- Read document about Microsoft identity platform ID tokens.
- Read document about Microsoft identity platform access tokens.
- Read document about Microsoft identity platform refresh tokens.
- Investigate each item's purpose in the 2 sample projects' application.yml.
- In client's application.yml, the property spring.security.oauth2.client.registration.scope contains openid, profile, and offline_access. what will happen if we delete these scopes?