微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 OAuth 与 Swagger Codegen 集成

如何解决如何将 OAuth 与 Swagger Codegen 集成

我正在使用 Swagger Generator 网站为 Java 中的 API 生成代码。 API 规范是公开的,可在此处获得。如您所见,JSON 似乎没有任何身份验证配置,但 API 实际上使用 OAuth 身份验证,使用“Microsoft 身份平台”作为权限并使用应用程序 ID 和机密来获取 JWT。我可以使用外部库在 Java 中获取令牌,但我希望尽可能将过程集成到 Swagger 中。

通过将之前的 JSON 导入生成器,显然没有配置 Authorization 并且所有 API 调用都失败。我修改了 JSON 并添加了以下参数:

  "securityDeFinition":{
      "civnext_oauth":{
         "type":"oauth2","authorizationUrl":"https://login.microsoftonline.com/............./oauth2/token","flow":"application","scopes":{
            "write:protocollo":"Modify Protocolli","read:protocollo":"Read Protocolli"
         }
      }
   },

然后,对于我添加的每个路径

       "security":{
           "civnext_oauth":[
              "write:protocollo","read:protocollo"
           ]
        },

生成了所有文件并在我的项目中正确导入了它们,但我仍然无法测试经过身份验证的 API 调用。 特别是:

我不知道我在 JSON 中的更改是否正确以及它是否是正确的程序。我错过了什么吗?难道我做错了什么? 在生成代码后,我不知道在 Java 中处理身份验证和 API 调用的正确方法。现在我是这样做的:

String authority = "https://login.microsoftonline.com/............./oauth2/token";
ExecutorService service = Executors.newFixedThreadPool(1);
AuthenticationContext context = new AuthenticationContext(authority,true,service);
        
Future<AuthenticationResult> future = context.acquiretoken(
  "api_resource_path",new ClientCredential(
    "app_id","secret"),null);
        
AuthenticationResult result = future.get(); 
    
OAuth authentication = new OAuth();
authentication.setAccesstoken(result.getAccesstoken());
        
apiclient apiclient = new apiclient();      
apiclient.getAuthentications().put("oauth2",authentication);
apiclient.setBasePath("basepath");
apiclient.setAccesstoken(result.getAccesstoken());
        
ProtocolloApi api = new ProtocolloApi();
api.setapiclient(apiclient);
Call call = api.protocolloGetTipoPostaCall("1.0",null,null);
Response response = call.execute();
System.out.println(response.toString());

但由于我缺少经验和文档,这只是即兴创作。 你能帮我吗?

最好的问候, 贾马科

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。