当前位置: 首页 > 知识库问答 >
问题:

如何在swagger ui中使用resourceonerpasswordcredentialsgrant

梁宏才
2023-03-14

我正在使用swagger,swagger用户界面与Spring rest api来获得一个平台来测试/记录API,所以我需要在swagger用户界面中获得oAuth2授权,我在授权服务器上使用密码授权,所以我不得不使用包中的ResourceOwnerPasswordCre

我找不到任何例子来将这种特殊类型的赠款用于swagger ui,任何帮助都非常感谢。


共有1个答案

邴英毅
2023-03-14

这是我的配置

public Docket oauth() {

    return new Docket(DocumentationType.SWAGGER_2).groupName("oauth")
            .securitySchemes(Arrays.asList(userOAuthScheme())).securityContexts(Arrays.asList(securityContext()))
            .select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
            .paths(not(ant("/admin/**")))
            .paths(not(ant("/admin.json")))
            .paths(not(ant("/error/**")))
            .paths(not(ant("/exception/**")))
            .paths(not(ant("/ping/**"))).build();
}

private OAuth userOAuthScheme() {
    List<AuthorizationScope> authorizationScopeList = new ArrayList<AuthorizationScope>();
    GrantType grantType = new ResourceOwnerPasswordCredentialsGrant("http://localhost:8080/authServer/oauth/token");
    return new OAuth("oauth2", authorizationScopeList, Arrays.asList(grantType));
}

private SecurityContext securityContext() {
    return SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.any()).build();
}

@Bean
public SecurityConfiguration securityInfo() {
    return new SecurityConfiguration("myClientId", "myClientSecret", "", "", "", ApiKeyVehicle.HEADER, "",
            " ");
}

private List<SecurityReference> defaultAuth() {
    final AuthorizationScope[] authorizationScopes = new AuthorizationScope[0];
    return Arrays.asList(new SecurityReference("oauth2", authorizationScopes));
}

在Swagger屏幕上,注意“设置客户端身份验证”部分

Type: Basic auth/ Request Body

这取决于你的实现,在我的情况下工作基本认证。

我不使用示波器,但你可以添加它

              AuthorizationScope[] authorizationScopes
              List<AuthorizationScope> authorizationScopeList 
 类似资料:
  • SwaggerUI 汉化版;修改了部分样式;结合SpringFox SpringFox-Swagger-UI实现API管理

  • 我想在Rest API(spring-mvc)文档中使用Springfox SwaggerUI。我在@RequestMapping注释中使用版本头,但是如果我有相同方法的两个版本,在SwaggerUI中只能看到一个。 上面的代码导致api文档中只有一个可见的方法。 考虑到我的版本头,是否有任何选项可以将Swagger配置为不同的endpoint?

  • 问题内容: 我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入存储库和库。我的文件如下: 如何在项目中添加OpenCV? 问题答案: 您可以在Android Studio中轻松完成此操作。 请按照以下步骤将Open CV作为库添加到您的项目中。 libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个Ope

  • 我想使用Android Studio开发一个应用程序使用Gradle构建工具。我无法在上插入OpenCV repo和库。我的文件如下所示: 我如何在我的项目中添加OpenCV?

  • 所以我的问题是: < li >我如何告诉swagger不要划分api 以下是endpoint的路由器功能以及我如何在此处配置swagger:

  • 问题内容: 我想对英语句子加标签,并进行一些处理。我想使用openNLP。我已经安装了 当我执行命令时 它提供输出POSTagging Text.txt中的输入 我希望它安装正确吗? 现在如何从Java应用程序内部进行此POStagging?我已将openNLPtools,jwnl,maxent jar添加到项目中,但是如何调用POStagging? 问题答案: 这是我放在一起的一些(旧)示例代码