@@ -110,7 +110,6 @@ public String generateJWTToken(
110
110
Map context = new HashMap ();
111
111
context .put ("clientKey" , oauthClient .getClientKey ());
112
112
context .put ("type" , accessToken .getType ());
113
- context .put ("scopes" , accessToken .getScopes ());
114
113
context .put ("refreshToken" , accessToken .getRefreshToken ());
115
114
116
115
if (type .equals ("user" )) {
@@ -120,13 +119,27 @@ public String generateJWTToken(
120
119
//remove unused fields.
121
120
userMap .remove ("userPassword" );
122
121
123
- //remove secure metadata field.
122
+ //encode secure metadata field.
124
123
Map metaData = (Map ) userMap .get ("metaData" );
125
124
if (secureMetadataFields != null ) {
126
125
metaData = JwtUtils .encodeMetadata (metaData , secureMetadataFields , metadataEncoderSecret1 , metadataEncoderSecret2 );
127
126
userMap .put ("metaData" , metaData );
128
127
}
129
128
context .put ("user" , userMap );
129
+
130
+ //Put scopes only user has.
131
+ List <String > scopes = accessToken .getScopes ();
132
+ List <String > userScopes = (List <String >) oauthUser .getMetaData ().get ("scopes" );
133
+ List <String > finalScopes = new ArrayList <>();
134
+ for (String scope : scopes ) {
135
+ if (userScopes .contains (scope )){
136
+ finalScopes .add (scope );
137
+ }
138
+ }
139
+ context .put ("scopes" , finalScopes );
140
+ } else {
141
+ //Put all scopes
142
+ context .put ("scopes" , accessToken .getScopes ());
130
143
}
131
144
132
145
//클라이언트의 콘텍스트 필수 항목만 context 에 집어넣는다.
0 commit comments