Add Token Exchange grant to demo-client sample
Issue gh-60
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2020-2023 the original author or authors.
|
||||
* Copyright 2020-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -41,11 +41,14 @@ import static org.springframework.security.oauth2.client.web.reactive.function.c
|
||||
public class AuthorizationController {
|
||||
private final WebClient webClient;
|
||||
private final String messagesBaseUri;
|
||||
private final String userMessagesBaseUri;
|
||||
|
||||
public AuthorizationController(WebClient webClient,
|
||||
@Value("${messages.base-uri}") String messagesBaseUri) {
|
||||
@Value("${messages.base-uri}") String messagesBaseUri,
|
||||
@Value("${user-messages.base-uri}") String userMessagesBaseUri) {
|
||||
this.webClient = webClient;
|
||||
this.messagesBaseUri = messagesBaseUri;
|
||||
this.userMessagesBaseUri = userMessagesBaseUri;
|
||||
}
|
||||
|
||||
@GetMapping(value = "/authorize", params = "grant_type=authorization_code")
|
||||
@@ -96,6 +99,21 @@ public class AuthorizationController {
|
||||
return "index";
|
||||
}
|
||||
|
||||
@GetMapping(value = "/authorize", params = "grant_type=token_exchange")
|
||||
public String tokenExchangeGrant(Model model) {
|
||||
|
||||
String[] messages = this.webClient
|
||||
.get()
|
||||
.uri(this.userMessagesBaseUri)
|
||||
.attributes(clientRegistrationId("user-client-authorization-code"))
|
||||
.retrieve()
|
||||
.bodyToMono(String[].class)
|
||||
.block();
|
||||
model.addAttribute("messages", messages);
|
||||
|
||||
return "index";
|
||||
}
|
||||
|
||||
@GetMapping(value = "/authorize", params = "grant_type=device_code")
|
||||
public String deviceCodeGrant() {
|
||||
return "device-activate";
|
||||
|
||||
@@ -38,6 +38,14 @@ spring:
|
||||
authorization-grant-type: client_credentials
|
||||
scope: message.read,message.write
|
||||
client-name: messaging-client-client-credentials
|
||||
user-client-authorization-code:
|
||||
provider: spring
|
||||
client-id: messaging-client
|
||||
client-secret: secret
|
||||
authorization-grant-type: authorization_code
|
||||
redirect-uri: "http://127.0.0.1:8080/authorized"
|
||||
scope: user.read
|
||||
client-name: user-client-authorization-code
|
||||
messaging-client-device-code:
|
||||
provider: spring
|
||||
client-id: device-messaging-client
|
||||
@@ -51,3 +59,6 @@ spring:
|
||||
|
||||
messages:
|
||||
base-uri: http://127.0.0.1:8090/messages
|
||||
|
||||
user-messages:
|
||||
base-uri: http://127.0.0.1:8091/user/messages
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="/authorize?grant_type=authorization_code" th:href="@{/authorize?grant_type=authorization_code}">Authorization Code</a></li>
|
||||
<li><a class="dropdown-item" href="/authorize?grant_type=client_credentials" th:href="@{/authorize?grant_type=client_credentials}">Client Credentials</a></li>
|
||||
<li><a class="dropdown-item" href="/authorize?grant_type=token_exchange" th:href="@{/authorize?grant_type=token_exchange}">Token Exchange</a></li>
|
||||
<li><a class="dropdown-item" href="/authorize?grant_type=device_code" th:href="@{/authorize?grant_type=device_code}">Device Code</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user