Skip to content

Commit faec6c7

Browse files
committed
Sync documentation of main branch
1 parent 10b7e6d commit faec6c7

File tree

7 files changed

+89
-44
lines changed

7 files changed

+89
-44
lines changed

_generated-doc/main/config/quarkus-all-config.adoc

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -23400,27 +23400,6 @@ endif::add-copy-button-to-env-var[]
2340023400
|boolean
2340123401
|`+++true+++`
2340223402

23403-
a|icon:lock[title=Fixed at build time] [[quarkus-grpc_quarkus-grpc-server-allow-incomplete-classpath]] [.property-path]##link:#quarkus-grpc_quarkus-grpc-server-allow-incomplete-classpath[`quarkus.grpc.server.allow-incomplete-classpath`]##
23404-
ifdef::add-copy-button-to-config-props[]
23405-
config_property_copy_button:+++quarkus.grpc.server.allow-incomplete-classpath+++[]
23406-
endif::add-copy-button-to-config-props[]
23407-
23408-
23409-
[.description]
23410-
--
23411-
Do we allow incomplete classpath for native build. This is useful for some legacy stuff that doesn't yet fully support Protobuf v4, only v3, which is missing some classes from v4, but can still work at runtime.
23412-
23413-
23414-
ifdef::add-copy-button-to-env-var[]
23415-
Environment variable: env_var_with_copy_button:+++QUARKUS_GRPC_SERVER_ALLOW_INCOMPLETE_CLASSPATH+++[]
23416-
endif::add-copy-button-to-env-var[]
23417-
ifndef::add-copy-button-to-env-var[]
23418-
Environment variable: `+++QUARKUS_GRPC_SERVER_ALLOW_INCOMPLETE_CLASSPATH+++`
23419-
endif::add-copy-button-to-env-var[]
23420-
--
23421-
|boolean
23422-
|`+++false+++`
23423-
2342423403
h|[[quarkus-grpc_section_quarkus-grpc-dev-mode]] [.section-name.section-level0]##link:#quarkus-grpc_section_quarkus-grpc-dev-mode[Configuration gRPC dev mode]##
2342523404
h|Type
2342623405
h|Default

_generated-doc/main/config/quarkus-grpc_quarkus.grpc.adoc

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -49,27 +49,6 @@ endif::add-copy-button-to-env-var[]
4949
|boolean
5050
|`+++true+++`
5151

52-
a|icon:lock[title=Fixed at build time] [[quarkus-grpc_quarkus-grpc-server-allow-incomplete-classpath]] [.property-path]##link:#quarkus-grpc_quarkus-grpc-server-allow-incomplete-classpath[`quarkus.grpc.server.allow-incomplete-classpath`]##
53-
ifdef::add-copy-button-to-config-props[]
54-
config_property_copy_button:+++quarkus.grpc.server.allow-incomplete-classpath+++[]
55-
endif::add-copy-button-to-config-props[]
56-
57-
58-
[.description]
59-
--
60-
Do we allow incomplete classpath for native build. This is useful for some legacy stuff that doesn't yet fully support Protobuf v4, only v3, which is missing some classes from v4, but can still work at runtime.
61-
62-
63-
ifdef::add-copy-button-to-env-var[]
64-
Environment variable: env_var_with_copy_button:+++QUARKUS_GRPC_SERVER_ALLOW_INCOMPLETE_CLASSPATH+++[]
65-
endif::add-copy-button-to-env-var[]
66-
ifndef::add-copy-button-to-env-var[]
67-
Environment variable: `+++QUARKUS_GRPC_SERVER_ALLOW_INCOMPLETE_CLASSPATH+++`
68-
endif::add-copy-button-to-env-var[]
69-
--
70-
|boolean
71-
|`+++false+++`
72-
7352
h|[[quarkus-grpc_section_quarkus-grpc-dev-mode]] [.section-name.section-level0]##link:#quarkus-grpc_section_quarkus-grpc-dev-mode[Configuration gRPC dev mode]##
7453
h|Type
7554
h|Default

_generated-doc/main/infra/quarkus-all-build-items.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9616,6 +9616,10 @@ Annotation name, for example `BasicAuthentication` .
96169616
96179617
Authentication mechanism scheme, as defined by `HttpAuthenticationMechanism#value()` .
96189618
9619+
`java.util.Set<DotName> excludedTargetInterfaces`
9620+
9621+
Classes annotated with `#annotationName` excluded from additional security checks. In other words, we do not register `io.quarkus.security.Authenticated` security check for these interfaces when no other standard security annotation is not present.
9622+
96199623
96209624
96219625

_versions/main/guides/_attributes.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
:jandex-version: 3.4.0
2323
:jandex-gradle-plugin-version: 1.0.0
2424
:kotlin-version: 2.2.0
25-
:grpc-version: 1.73.0
26-
:protoc-version: 4.31.1
25+
:grpc-version: 1.69.1
26+
:protoc-version: 3.25.5
2727
:gcf-invoker-version: 1.4.1
2828
// Cannot simply use the name 'hibernate-*-version' here as it somehow gets
2929
// overridden to the full version, at least when building locally.

_versions/main/guides/security-oidc-bearer-token-authentication.adoc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1552,6 +1552,34 @@ public class DiscoveryEndpointResponseFilter implements OidcResponseFilter {
15521552
<3> Use `OidcRequestContextProperties` request properties to get the tenant id.
15531553
<4> Get the response data as String.
15541554

1555+
[[restrict-oidc-filter-to-bearer-auth-flow]]
1556+
=== Restricting OIDC request and response filters to bearer token flow
1557+
1558+
When you have both the bearer access token and xref:security-oidc-code-flow-authentication.adoc[authorization code] flows supported by xref:security-openid-connect-multitenancy.adoc[multiple OIDC tenants] and the filters have to deal with a flow specific logic, you can instead have them restricted to the bearer token flow with the `io.quarkus.oidc.BearerTokenAuthentication` annotation and xref:security-oidc-code-flow-authentication.adoc#restrict-oidc-filter-to-code-flow[the authorization code flow with the 'io.quarkus.oidc.AuthorizationCodeFlow' annotation].
1559+
1560+
For example:
1561+
1562+
[source,java]
1563+
----
1564+
package io.quarkus.it.keycloak;
1565+
1566+
import io.quarkus.arc.Unremovable;
1567+
import io.quarkus.oidc.BearerTokenAuthentication;
1568+
import io.quarkus.oidc.common.OidcRequestFilter;
1569+
import jakarta.enterprise.context.ApplicationScoped;
1570+
1571+
@BearerTokenAuthentication
1572+
@ApplicationScoped
1573+
@Unremovable
1574+
public class CustomOidcRequestFilter implements OidcRequestFilter {
1575+
1576+
@Override
1577+
public void filter(OidcRequestContext requestContext) {
1578+
requestContext.request().putHeader("custom-header-name", "custom-header-value");
1579+
}
1580+
}
1581+
----
1582+
15551583
== Programmatic OIDC start-up
15561584

15571585
OIDC tenants can be created programmatically like in the example below:

_versions/main/guides/security-oidc-code-flow-authentication.adoc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,34 @@ public class TokenResponseFilter implements OidcResponseFilter {
508508
}
509509
----
510510

511+
[[restrict-oidc-filter-to-code-flow]]
512+
=== Restricting OIDC request and response filters to authorization code flow
513+
514+
When you have both the authorization code and xref:security-oidc-bearer-token-authentication.adoc[bearer access token] flows supported by xref:security-openid-connect-multitenancy.adoc[multiple OIDC tenants] and the filters have to deal with a flow specific logic, you can instead have them restricted to the authorization code flow with the `io.quarkus.oidc.AuthorizationCodeFlow` annotation and xref:security-oidc-bearer-token-authentication.adoc#restrict-oidc-filter-to-bearer-auth-flow[the bearer access token flow with the 'io.quarkus.oidc.BearerTokenAuthentication' annotation].
515+
516+
For example:
517+
518+
[source,java]
519+
----
520+
package io.quarkus.it.keycloak;
521+
522+
import io.quarkus.arc.Unremovable;
523+
import io.quarkus.oidc.AuthorizationCodeFlow;
524+
import io.quarkus.oidc.common.OidcRequestFilter;
525+
import jakarta.enterprise.context.ApplicationScoped;
526+
527+
@AuthorizationCodeFlow
528+
@ApplicationScoped
529+
@Unremovable
530+
public class CustomOidcRequestFilter implements OidcRequestFilter {
531+
532+
@Override
533+
public void filter(OidcRequestContext requestContext) {
534+
requestContext.request().putHeader("custom-header-name", "custom-header-value");
535+
}
536+
}
537+
----
538+
511539
=== Redirecting to and from the OIDC provider
512540

513541
When a user is redirected to the OIDC provider to authenticate, the redirect URL includes a `redirect_uri` query parameter, which indicates to the provider where the user has to be redirected to when the authentication is complete.

_versions/main/guides/security-openid-connect-multitenancy.adoc

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -974,6 +974,33 @@ quarkus.oidc.tenant-b.credentials.secret=${tenant-b-client-secret}
974974
<2> Tenant `tenant-a` discovers the `issuer` from the OIDC provider's well-known configuration endpoint.
975975
<3> Tenant `tenant-b` configures the `issuer` because its OIDC provider does not support the discovery.
976976

977+
[[restrict-oidc-filter-to-tenants]]
978+
==== Restricting OIDC request and response filters to specific tenants
979+
980+
Both the `io.quarkus.oidc.common.OidcRequestFilter` and the `io.quarkus.oidc.common.OidcResponseFilter` filters can be restricted to specific tenants like in the example below:
981+
982+
[source,java]
983+
----
984+
package io.quarkus.it.oidc;
985+
986+
import io.quarkus.oidc.TenantFeature;
987+
import io.quarkus.oidc.common.OidcRequestFilter;
988+
import jakarta.enterprise.context.ApplicationScoped;
989+
990+
@ApplicationScoped
991+
@TenantFeature({ "tenant-one", "tenant-two" }) <1>
992+
public class CustomOidcRequestFilter implements OidcRequestFilter {
993+
994+
@Override
995+
public void filter(OidcRequestContext requestContext) {
996+
requestContext.request().putHeader("custom-header-name", "custom-header-value");
997+
}
998+
}
999+
----
1000+
<1> Restrict the `CustomOidcRequestFilter` filter to OIDC tenants `tenant-one` and `tenant-two`.
1001+
1002+
An OIDC response filter can be restricted to the specific OIDC endpoint or endpoints with the `quarkus.oidc.common.OidcEndpoint` annotation.
1003+
9771004
[[tenant-resolution-for-web-app]]
9781005
=== Tenant resolution for OIDC web-app applications
9791006

0 commit comments

Comments
 (0)