Skip to content

Commit 419d726

Browse files
committed
Add Docs for Custom Bearer Token Header
Issue gh-8337
1 parent 2f8eb16 commit 419d726

File tree

2 files changed

+35
-8
lines changed

2 files changed

+35
-8
lines changed

docs/manual/src/docs/asciidoc/_includes/reactive/oauth2/resource-server.adoc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,6 +1077,29 @@ This approach allows us to add and remove elements from the repository (shown as
10771077
NOTE: It would be unsafe to simply take any issuer and construct an `ReactiveAuthenticationManager` from it.
10781078
The issuer should be one that the code can verify from a trusted source like a whitelist.
10791079

1080+
[[webflux-oauth2resourceserver-bearertoken-resolver]]
1081+
== Bearer Token Resolution
1082+
1083+
By default, Resource Server looks for a bearer token in the `Authorization` header.
1084+
This, however, can be customized.
1085+
1086+
For example, you may have a need to read the bearer token from a custom header.
1087+
To achieve this, you can wire an instance of `ServerBearerTokenAuthenticationConverter` into the DSL, as you can see in the following example:
1088+
1089+
.Custom Bearer Token Header
1090+
====
1091+
.Java
1092+
[source,java,role="primary"]
1093+
----
1094+
ServerBearerTokenAuthenticationConverter converter = new ServerBearerTokenAuthenticationConverter();
1095+
converter.setBearerTokenHeaderName(HttpHeaders.PROXY_AUTHORIZATION);
1096+
http
1097+
.oauth2ResourceServer(oauth2 -> oauth2
1098+
.bearerTokenConverter(converter)
1099+
);
1100+
----
1101+
====
1102+
10801103
== Bearer Token Propagation
10811104

10821105
Now that you're in possession of a bearer token, it might be handy to pass that to downstream services.

docs/manual/src/docs/asciidoc/_includes/servlet/oauth2/oauth2-resourceserver.adoc

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1955,22 +1955,24 @@ However, if you resolve it by a claim in the bearer token, read on to learn abou
19551955
=== Bearer Token Resolution
19561956

19571957
By default, Resource Server looks for a bearer token in the `Authorization` header.
1958-
This, however, can be customized in a couple of ways.
1958+
This, however, can be customized in a handful of ways.
19591959

19601960
==== Reading the Bearer Token from a Custom Header
19611961

19621962
For example, you may have a need to read the bearer token from a custom header.
1963-
To achieve this, you can wire a `HeaderBearerTokenResolver` instance into the DSL, as you can see in the following example:
1963+
To achieve this, you can expose a `DefaultBearerTokenResolver` as a bean, or wire an instance into the DSL, as you can see in the following example:
19641964

19651965
.Custom Bearer Token Header
19661966
====
19671967
.Java
19681968
[source,java,role="primary"]
19691969
----
1970-
http
1971-
.oauth2ResourceServer(oauth2 -> oauth2
1972-
.bearerTokenResolver(new HeaderBearerTokenResolver("x-goog-iap-jwt-assertion"))
1973-
);
1970+
@Bean
1971+
BearerTokenResolver bearerTokenResolver() {
1972+
DefaultBearerTokenResolver bearerTokenResolver = new DefaultBearerTokenResolver();
1973+
bearerTokenResolver.setBearerTokenHeaderName(HttpHeaders.PROXY_AUTHORIZATION);
1974+
return bearerTokenResolver;
1975+
}
19741976
----
19751977
19761978
.Xml
@@ -1981,12 +1983,14 @@ http
19811983
</http>
19821984
19831985
<bean id="bearerTokenResolver"
1984-
class="org.springframework.security.oauth2.server.resource.web.HeaderBearerTokenResolver">
1985-
<constructor-arg value="x-goog-iap-jwt-assertion"/>
1986+
class="org.springframework.security.oauth2.server.resource.web.DefaultBearerTokenResolver">
1987+
<property name="bearerTokenHeaderName" value="Proxy-Authorization"/>
19861988
</bean>
19871989
----
19881990
====
19891991

1992+
Or, in circumstances where a provider is using both a custom header and value, you can use `HeaderBearerTokenResolver` instead.
1993+
19901994
==== Reading the Bearer Token from a Form Parameter
19911995

19921996
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:

0 commit comments

Comments
 (0)