【问题标题】:How to use ResourceOwnerPasswordCredentialsGrant with swagger ui如何将 ResourceOwnerPasswordCredentialsGrant 与 swagger ui 一起使用
【发布时间】:2017-02-06 21:36:57
【问题描述】:

我正在使用 swagger、swagger ui 和 spring rest api 来获得一个用于测试/记录 API 的平台,所以我需要在 swagger ui 中获得 oAuth2 授权,我正在使用授权服务器的密码授予,所以我有使用包springfox.documentation.service中的ResourceOwnerPasswordCredentialsGrant,它的构造函数有一个参数,即令牌url,我将其设置为我的授权服务器中的令牌端点,但不幸的是,它不会保留令牌url并显示在授权窗口中为 null 如下:

我找不到任何示例来使用这种特殊类型的授权与 swagger ui,非常感谢任何帮助。

【问题讨论】:

  • 我已经回答了这个问题here

标签: spring-boot swagger swagger-ui springfox


【解决方案1】:

这是我的配置

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 

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多