@@ -1151,6 +1151,37 @@ OpaqueTokenIntrospector introspector() {
1151
1151
Thus far we have only taken a look at the most basic authentication configuration.
1152
1152
Let's take a look at a few slightly more advanced options for configuring authentication.
1153
1153
1154
+ [[oauth2resourceserver-bearertoken-resolver]]
1155
+ === Bearer Token Resolution
1156
+
1157
+ By default, Resource Server looks for a bearer token in the `Authorization` header.
1158
+ This, however, can be customized in a couple of ways.
1159
+
1160
+ ==== Reading the Bearer Token from a Custom Header
1161
+
1162
+ For example, you may have a need to read the bearer token from a custom header.
1163
+ To achieve this, you can wire a `HeaderBearerTokenResolver` instance into the DSL, as you can see in the following example:
1164
+
1165
+ [source,java]
1166
+ ----
1167
+ http
1168
+ .oauth2ResourceServer()
1169
+ .bearerTokenResolver(new HeaderBearerTokenResolver("x-goog-iap-jwt-assertion"));
1170
+ ----
1171
+
1172
+ ==== Reading the Bearer Token from a Form Parameter
1173
+
1174
+ Or, you may wish to read the token from a form parameter, which you can do by configuring the `DefaultBearerTokenResolver`, as you can see below:
1175
+
1176
+ [source,java]
1177
+ ----
1178
+ DefaultBearerTokenResolver resolver = new DefaultBearerTokenResolver();
1179
+ resolver.setAllowFormEncodedBodyParameter(true);
1180
+ http
1181
+ .oauth2ResourceServer()
1182
+ .bearerTokenResolver(resolver);
1183
+ ----
1184
+
1154
1185
=== Bearer Token Propagation
1155
1186
1156
1187
Now that you're in possession of a bearer token, it might be handy to pass that to downstream services.
0 commit comments