You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置HAPI FHIR的OpenApiInterceptor实现Swagger身份认证

HAPI FHIR OpenAPI 隐式流认证配置方案

你可以通过自定义OpenApiInterceptor加载的OpenAPI元数据,添加OAuth2隐式流的安全配置,完整实现代码如下:

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.OAuthFlow;
import io.swagger.v3.oas.models.security.OAuthFlows;
import io.swagger.v3.oas.models.security.Scopes;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import ca.uhn.fhir.rest.server.interceptor.OpenApiInterceptor;

@Override
protected void initialize() throws ServletException {

    // ... 原有资源提供方定义代码 ...

    // 构建自定义OpenAPI配置
    OpenAPI openApi = new OpenAPI();
    // 基础信息配置可根据你的需求修改
    openApi.setInfo(new Info().title("FHIR R4 服务接口").version("1.0"));

    // 配置OAuth2隐式流安全方案
    SecurityScheme oauth2Scheme = new SecurityScheme()
        .type(SecurityScheme.Type.OAUTH2)
        .flows(new OAuthFlows()
            .implicit(new OAuthFlow()
                .authorizationUrl("你的IDP授权端点地址")
                .scopes(new Scopes()
                    // 根据你的业务需求添加所需scope
                    .addString("fhir.read", "FHIR资源读取权限")
                    .addString("fhir.write", "FHIR资源写入权限")
                )
            )
        );
    openApi.getComponents().addSecuritySchemes("oauth2_implicit", oauth2Scheme);

    // 全局应用安全要求,所有接口都需要认证
    openApi.addSecurityItem(new SecurityRequirement().addList("oauth2_implicit"));

    // 注册带自定义配置的拦截器
    OpenApiInterceptor openApiInterceptor = new OpenApiInterceptor();
    openApiInterceptor.setOpenApi(openApi);
    registerInterceptor(openApiInterceptor);

}

完成上述配置后,Swagger UI页面右上角会出现认证按钮,点击后即可跳转IDP完成隐式流认证,后续请求会自动携带获取到的Access Token访问FHIR端点。

注意事项

  • 代码中的你的IDP授权端点地址需替换为你实际使用的IDP隐式流授权入口
  • 需提前在IDP后台将Swagger UI的访问地址添加到隐式流的授权回调白名单
  • 若使用Spring Security作为权限管控框架,需放行Swagger相关静态资源路径,确保未认证时可正常打开Swagger页面
  • FHIR端点的权限校验需配合对应的认证拦截器实现,确保能正确解析请求头中的Bearer Token完成权限校验

内容的提问来源于stack exchange,提问作者cobolstinks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:15:02