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。