首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swagger和JWT令牌身份验证

Swagger和JWT令牌身份验证
EN

Stack Overflow用户
提问于 2017-04-28 07:06:07
回答 2查看 13.1K关注 0票数 4

我正在构建一些Swagger文档,一切都很好,除了我想让页面以交互方式工作之外,所以当我选择编辑器或UI时,如果我点击authorize按钮,我将调用我的身份验证URL,它构建JWT令牌,然后在后续的请求中使用。

我计划向API客户端发布一个Api访问密钥和一个秘密访问密钥,并希望访问一个身份验证页面,该页面将处理这些密钥并构建JWT令牌。

我突然意识到,如果我能够正确定义如何在Swagger中实现这一点,那么我将拥有一个现成的测试客户端,然后用于我的新代码。

是的,这是我第一次使用JWT,我还没有构建代码。你能说"API-First“吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-09 13:35:36

这就是我将Swagger与JWT身份验证结合使用的方法:

  • 编写Express.js应用编程接口终结点以生成JWT。
  • 创建一个Swagger路径以使用上述终结点安全根级别中的
  • 检索JWT: swagger.yaml定义:JWT: type: apiKey in:标头名称: access_token
  • In swagger.yaml paths:security -JWT:[]

<

  • >F29

这将在浏览器上的Swagger UI中显示授权按钮。

  • 单击上面的Authorize按钮后,在弹出的身份验证窗口中输入上面生成的JWT
  • Now JWT将随请求头

一起传递

希望这对其他人有所帮助。

票数 7
EN

Stack Overflow用户

发布于 2018-12-20 13:08:20

使用Swagger可以保存令牌并自动将令牌应用到您的所有请求。

以下是您需要添加到Swagger摘要配置中的内容:

代码语言:javascript
复制
@Bean
public Docket newsApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build()
            .securitySchemes(Lists.newArrayList(apiKey()))
            .securityContexts(Lists.newArrayList(securityContext()))
            .apiInfo(generateApiInfo());
}

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

List<SecurityReference> defaultAuth() {
    AuthorizationScope authorizationScope
            = new AuthorizationScope("global", "accessEverything");
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
    authorizationScopes[0] = authorizationScope;
    return Lists.newArrayList(
            new SecurityReference("JWT", authorizationScopes));
}

private ApiKey apiKey() {
    return new ApiKey("JWT", "Authorization", "header");
}

加载Swagger UI后,您将能够看到Authorize按钮。

您可以保存您的令牌,请确保在您的令牌前面添加了“持有者”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43669302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档