8
8
import org .lowcoder .domain .user .model .AuthToken ;
9
9
import org .lowcoder .domain .user .model .AuthUser ;
10
10
import org .lowcoder .sdk .auth .Oauth2OryAuthConfig ;
11
- import org .lowcoder .sdk .auth .Oauth2SimpleAuthConfig ;
12
11
import org .lowcoder .sdk .util .JsonUtils ;
13
12
import org .lowcoder .sdk .webclient .WebClientBuildHelper ;
14
13
import org .springframework .core .ParameterizedTypeReference ;
14
+ import org .springframework .http .MediaType ;
15
15
import reactor .core .publisher .Mono ;
16
16
17
17
import java .net .URI ;
18
18
import java .net .URISyntaxException ;
19
19
import java .util .Map ;
20
20
21
+ import static org .springframework .web .reactive .function .BodyInserters .fromFormData ;
22
+
21
23
public class OryRequest extends AbstractOauth2Request <Oauth2OryAuthConfig > {
22
24
23
25
public OryRequest (Oauth2OryAuthConfig config ) {
@@ -28,13 +30,7 @@ public OryRequest(Oauth2OryAuthConfig config) {
28
30
protected Mono <AuthToken > getAuthToken (OAuth2RequestContext context ) {
29
31
URI uri ;
30
32
try {
31
- uri = new URIBuilder (source .accessToken ())
32
- .addParameter ("code" , context .getCode ())
33
- .addParameter ("client_id" , config .getClientId ())
34
- .addParameter ("client_secret" , config .getClientSecret ())
35
- .addParameter ("grant_type" , "authorization_code" )
36
- .addParameter ("redirect_uri" , context .getRedirectUrl ())
37
- .build ();
33
+ uri = new URIBuilder (config .replaceAuthUrlClientIdPlaceholder (source .accessToken ())).build ();
38
34
} catch (URISyntaxException e ) {
39
35
throw new RuntimeException (e );
40
36
}
@@ -44,6 +40,12 @@ protected Mono<AuthToken> getAuthToken(OAuth2RequestContext context) {
44
40
.build ()
45
41
.post ()
46
42
.uri (uri )
43
+ .contentType (MediaType .APPLICATION_FORM_URLENCODED )
44
+ .body (fromFormData ("code" , context .getCode ())
45
+ .with ("client_id" , config .getClientId ())
46
+ .with ("client_secret" , config .getClientSecret ())
47
+ .with ("grant_type" , "authorization_code" )
48
+ .with ("redirect_uri" , context .getRedirectUrl ()))
47
49
.exchangeToMono (response -> response .bodyToMono (new ParameterizedTypeReference <Map <String , Object >>() {
48
50
}))
49
51
.flatMap (map -> {
@@ -64,12 +66,7 @@ protected Mono<AuthToken> refreshAuthToken(String refreshToken) {
64
66
65
67
URI uri ;
66
68
try {
67
- uri = new URIBuilder (source .refresh ())
68
- .addParameter ("refresh_token" , refreshToken )
69
- .addParameter ("client_id" , config .getClientId ())
70
- .addParameter ("client_secret" , config .getClientSecret ())
71
- .addParameter ("grant_type" , "refresh_token" )
72
- .build ();
69
+ uri = new URIBuilder (config .replaceAuthUrlClientIdPlaceholder (source .refresh ())).build ();
73
70
} catch (URISyntaxException e ) {
74
71
throw new RuntimeException (e );
75
72
}
@@ -79,6 +76,11 @@ protected Mono<AuthToken> refreshAuthToken(String refreshToken) {
79
76
.build ()
80
77
.post ()
81
78
.uri (uri )
79
+ .contentType (MediaType .APPLICATION_FORM_URLENCODED )
80
+ .body (fromFormData ("refresh_token" , refreshToken )
81
+ .with ("client_id" , config .getClientId ())
82
+ .with ("client_secret" , config .getClientSecret ())
83
+ .with ("grant_type" , "refresh_token" ))
82
84
.exchangeToMono (response -> response .bodyToMono (new ParameterizedTypeReference <Map <String , Object >>() {
83
85
}))
84
86
.flatMap (map -> {
@@ -88,6 +90,7 @@ protected Mono<AuthToken> refreshAuthToken(String refreshToken) {
88
90
AuthToken authToken = AuthToken .builder ()
89
91
.accessToken (MapUtils .getString (map , "access_token" ))
90
92
.expireIn (MapUtils .getIntValue (map , "expires_in" ))
93
+ .refreshToken (MapUtils .getString (map , "refresh_token" ))
91
94
.build ();
92
95
return Mono .just (authToken );
93
96
});
@@ -100,7 +103,7 @@ protected Mono<AuthUser> getAuthUser(AuthToken authToken) {
100
103
.systemProxy ()
101
104
.build ()
102
105
.post ()
103
- .uri (source .userInfo ())
106
+ .uri (config . replaceAuthUrlClientIdPlaceholder ( source .userInfo () ))
104
107
.header ("Authorization" , "Bearer " + authToken .getAccessToken ())
105
108
.exchangeToMono (response -> response .bodyToMono (new ParameterizedTypeReference <Map <String , Object >>() {
106
109
}))
0 commit comments