📜  spring swagger ui login oauth2 - Java 代码示例

📅  最后修改于: 2022-03-11 14:52:28.696000             🧑  作者: Mango

代码示例1
@Configuration
@EnableSwagger2
public class SpringFoxConfig implements WebMvcConfigurer {

    private String accessTokenUri = "http://localhost:8080/oauth/token";

    @Bean
    public Docket api() {

        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.basePackage("com.gft.desafioapi")).paths(PathSelectors.any()).build()
                .apiInfo(apiInfo())
                .tags(new Tag("Fornecedores", "Gerencia os fornecedores"), new Tag("Clientes", "Gerencia os clientes"),
                        new Tag("Produtos", "Gerencia os produtos"), new Tag("Vendas", "Gerencia as vendas"))
                .securityContexts(Collections.singletonList(securityContext()))
                .securitySchemes(Arrays.asList(securitySchema()));
    }

    private OAuth securitySchema() {

        List authorizationScopeList = new ArrayList<>();
        authorizationScopeList.add(new AuthorizationScope("read", "read all"));

        List grantTypes = new ArrayList<>();
        GrantType passwordCredentialsGrant = new ResourceOwnerPasswordCredentialsGrant(accessTokenUri);

        grantTypes.add(passwordCredentialsGrant);

        return new OAuth("oauth2", authorizationScopeList, grantTypes);

    }

    private SecurityContext securityContext() {
        return SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.ant("/api/**"))
                .build();
    }

    private List defaultAuth() {

        final AuthorizationScope[] authorizationScopes = { new AuthorizationScope("read", "read all") };

        return Collections.singletonList(new SecurityReference("oauth2", authorizationScopes));
    }

    @Bean
    public SecurityConfiguration securityInfo() {
        return new SecurityConfiguration("admin", "admin", "", "", "Bearer access token", ApiKeyVehicle.HEADER,
                HttpHeaders.AUTHORIZATION, "");
    }

    public ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("GFT - Desafio API")
                .description("API construida para o desafio do programa START GFT").version("1")
                .contact(new Contact("GFT", "https://www.gft.com", "lucas.pedroso@gft.com")).build();
    }
}