20
20
21
21
% for testing
22
22
-export ([post_process_payload /2 , get_expanded_scopes /2 ]).
23
-
23
+ - import ( uaa_jwt , [ resolve_resource_server_id / 1 ]).
24
24
-import (rabbit_data_coercion , [to_map /1 ]).
25
+ -import (rabbit_oauth2_config , [get_preferred_username_claims /1 ]).
25
26
26
27
-ifdef (TEST ).
27
28
-compile (export_all ).
@@ -98,46 +99,28 @@ check_topic_access(#auth_user{impl = DecodedTokenFun},
98
99
end ).
99
100
100
101
update_state (AuthUser , NewToken ) ->
101
- <<<<<<< HEAD
102
- case check_token (NewToken ) of
103
- % % avoid logging the token
104
- {error , _ } = E -> E ;
105
- {refused , {error , {invalid_token , error , _Err , _Stacktrace }}} ->
106
- {refused , " Authentication using an OAuth 2/JWT token failed: provided token is invalid" };
107
- {refused , Err } ->
108
- {refused , rabbit_misc :format (" Authentication using an OAuth 2/JWT token failed: ~tp " , [Err ])};
109
- {ok , DecodedToken } ->
110
- Tags = tags_from (DecodedToken ),
111
-
112
- {ok , AuthUser # auth_user {tags = Tags ,
113
- impl = fun () -> DecodedToken end }}
114
- end .
115
- =======
116
- case resolve_resource_server (NewToken ) of
117
- {error , _ } = Err0 -> Err0 ;
118
- {ResourceServer , _ } = Tuple ->
119
- case check_token (NewToken , Tuple ) of
120
- % % avoid logging the token
121
- {refused , {error , {invalid_token , error , _Err , _Stacktrace }}} ->
122
- {refused , " Authentication using an OAuth 2/JWT token failed: provided token is invalid" };
123
- {refused , Err } ->
124
- {refused , rabbit_misc :format (" Authentication using an OAuth 2/JWT token failed: ~tp " , [Err ])};
125
- {ok , DecodedToken } ->
126
- CurToken = AuthUser # auth_user .impl ,
127
- case ensure_same_username (
128
- ResourceServer # resource_server .preferred_username_claims ,
129
- CurToken (), DecodedToken ) of
130
- ok ->
131
- Tags = tags_from (DecodedToken ),
132
- {ok , AuthUser # auth_user {tags = Tags ,
133
- impl = fun () -> DecodedToken end }};
134
- {error , mismatch_username_after_token_refresh } ->
135
- {refused ,
136
- " Not allowed to change username on refreshed token" }
137
- end
102
+ case check_token (NewToken ) of
103
+ % % avoid logging the token
104
+ {error , _ } = E -> E ;
105
+ {refused , {error , {invalid_token , error , _Err , _Stacktrace }}} ->
106
+ {refused , " Authentication using an OAuth 2/JWT token failed: provided token is invalid" };
107
+ {refused , Err } ->
108
+ {refused , rabbit_misc :format (" Authentication using an OAuth 2/JWT token failed: ~tp " , [Err ])};
109
+ {ok , DecodedToken } ->
110
+ ResourceServerId = resolve_resource_server_id (DecodedToken ),
111
+ CurToken = AuthUser # auth_user .impl ,
112
+ case ensure_same_username (
113
+ get_preferred_username_claims (ResourceServerId ),
114
+ CurToken (), DecodedToken ) of
115
+ ok ->
116
+ Tags = tags_from (DecodedToken ),
117
+ {ok , AuthUser # auth_user {tags = Tags ,
118
+ impl = fun () -> DecodedToken end }};
119
+ {error , mismatch_username_after_token_refresh } ->
120
+ {refused ,
121
+ " Not allowed to change username on refreshed token" }
138
122
end
139
123
end .
140
- >>>>>>> 3718 fe3289 (Prevent change of username on token refresh )
141
124
142
125
expiry_timestamp (# auth_user {impl = DecodedTokenFun }) ->
143
126
case DecodedTokenFun () of
@@ -162,37 +145,20 @@ authenticate(_, AuthProps0) ->
162
145
{refused , " Authentication using an OAuth 2/JWT token failed: ~tp " , [Err ]};
163
146
{ok , DecodedToken } ->
164
147
Func = fun (Token0 ) ->
165
- Username = username_from (rabbit_oauth2_config :get_preferred_username_claims (), Token0 ),
166
- Tags = tags_from (Token0 ),
167
-
168
- {ok , # auth_user {username = Username ,
169
- tags = Tags ,
170
- impl = fun () -> Token0 end }}
171
- end ,
148
+ ResourceServerId = resolve_resource_server_id (Token0 ),
149
+ Username = username_from (
150
+ get_preferred_username_claims (ResourceServerId ),
151
+ Token0 ),
152
+ Tags = tags_from (Token0 ),
153
+ {ok , # auth_user {username = Username ,
154
+ tags = Tags ,
155
+ impl = fun () -> Token0 end }}
156
+ end ,
172
157
case with_decoded_token (DecodedToken , Func ) of
173
158
{error , Err } ->
174
159
{refused , " Authentication using an OAuth 2/JWT token failed: ~tp " , [Err ]};
175
- <<<<<<< HEAD
176
160
Else ->
177
161
Else
178
- =======
179
- {ok , DecodedToken } ->
180
- Func = fun (Token0 ) ->
181
- Username = username_from (
182
- ResourceServer # resource_server .preferred_username_claims ,
183
- Token0 ),
184
- Tags = tags_from (Token0 ),
185
- {ok , # auth_user {username = Username ,
186
- tags = Tags ,
187
- impl = fun () -> Token0 end }}
188
- end ,
189
- case with_decoded_token (DecodedToken , Func ) of
190
- {error , Err } ->
191
- {refused , " Authentication using an OAuth 2/JWT token failed: ~tp " , [Err ]};
192
- Else ->
193
- Else
194
- end
195
- >>>>>>> 3718 fe3289 (Prevent change of username on token refresh )
196
162
end
197
163
end .
198
164
0 commit comments