2.2. 架构
在本例中,应用程序使用两个 Jakarta REST 资源构建,即 FrontendResource
和 ProtectedResource
。在这里,Frontend Resource
使用三种方法之一将访问令牌传播到 ProtectedResource
:
- 它可以通过在传播令牌前使用 OIDC 客户端过滤器来获取令牌。
-
它可以使用编程创建的 OIDC 客户端来获取令牌,并通过将其作为 HTTP 授权标头值传递给 REST 客户端方法来传播令牌。
- 它可以使用 OIDC 令牌传播过滤器来传播传入的访问令牌。
FrontendResource
有八个端点:
-
/frontend/user-name-with-oidc-client-token
-
/frontend/admin-name-with-oidc-client-token
-
/frontend/user-name-with-oidc-client-token-header-param
-
/frontend/admin-name-with-oidc-client-token-header-param
-
/frontend/user-name-with-oidc-client-token-header-param-blocking
-
/frontend/admin-name-with-oidc-client-token-header-param-blocking
-
/frontend/user-name-with-propagated-token
-
/frontend/admin-name-with-propagated-token
当 /frontend/user-name-with-oidc-client-token
或 /frontend/admin-name-with-oidc-client-token
端点被调用时,Frontend Resource
使用带有 OIDC 客户端过滤器的 REST 客户端来获取和传播访问令牌到 ProtectedResource
。当 /frontend/user-name-with-oidc-client-token-header-param
或 /frontend/admin-name-with-oidc-client-token-header-param
端点被调用,Frontend Resource
使用以编程方式创建的 OIDC 客户端来获取和传播访问令牌到 ProtectedResource
,方法是将其作为 HTTP Authorization
标头值传递给 REST 客户端方法。当 /frontend/user-name-with-propagated-token
或 /frontend/admin-name-with-propagated-token
端点被调用时,FrontendResource
使用带有 OIDC Token Propagation Filter
的 REST 客户端将当前的传入访问令牌传播到 ProtectedResource
。
ProtectedResource
有两个端点:
-
/protected/user-name
-
/protected/admin-name
两个端点返回从传入访问令牌中提取的用户名,该令牌从 FrontendResource
传播到 ProtectedResource
。这些端点之间的唯一区别在于,只有在当前访问令牌具有用户角色时才允许调用 /protected/
,只有在当前访问令牌具有 user
-nameadmin
角色时才允许调用 /protected/admin-name
。