Rest Swagger和JWT令牌身份验证
我正在构建一些招摇过市的文档,一切都很好,只是我希望页面能够以交互方式工作,所以在选择编辑器或UI时,如果我点击授权按钮,我会调用我的身份验证URL,该URL构建JWT令牌,然后在后续请求中使用 我计划向API客户机颁发一个API访问密钥和一个秘密访问密钥,并希望访问一个身份验证页面,该页面将处理这些密钥并构建JWT令牌 我突然想到,如果我能够正确地定义如何在大摇大摆中实现这一点,那么我将拥有一个现成的测试客户机,然后用于我的新代码Rest Swagger和JWT令牌身份验证,rest,authentication,jwt,swagger,Rest,Authentication,Jwt,Swagger,我正在构建一些招摇过市的文档,一切都很好,只是我希望页面能够以交互方式工作,所以在选择编辑器或UI时,如果我点击授权按钮,我会调用我的身份验证URL,该URL构建JWT令牌,然后在后续请求中使用 我计划向API客户机颁发一个API访问密钥和一个秘密访问密钥,并希望访问一个身份验证页面,该页面将处理这些密钥并构建JWT令牌 我突然想到,如果我能够正确地定义如何在大摇大摆中实现这一点,那么我将拥有一个现成的测试客户机,然后用于我的新代码 是的,这是我第一次使用JWT,我还没有构建代码。你能说“API
是的,这是我第一次使用JWT,我还没有构建代码。你能说“API优先”吗 这就是我如何将Swagger与JWT身份验证结合使用:
- 编写一个Express.js API端点以生成JWT
- 使用上述端点创建一个招摇过市路径来检索JWT
- 在swagger.yaml根级别中:
securityDefinitions: JWT: type: apiKey in: header name: access_token
- 在swagger.yaml路径中:
security -JWT: []
- 在单击上面的授权按钮时弹出的身份验证窗口中输入上面生成的JWT
- 现在,JWT将与请求头一起传递
希望这可以帮助其他人。使用Swagger可以保存您的令牌并自动将令牌应用于您的所有请求 以下是您需要添加到Swagger Docket配置中的内容:
@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");
}
@Bean
公共摘要新闻API(){
返回新摘要(DocumentationType.SWAGGER_2)
.选择()
.api(RequestHandlerSelectors.any())
.path(路径选择器.any())
.build()
.securitySchemes(list.newArrayList(apiKey()))
.securityContext(列表.newArrayList(securityContext()))
.apinfo(generateApiInfo());
}
@豆子
SecurityContext SecurityContext(){
返回SecurityContext.builder()
.securityReferences(defaultAuth())
.forpath(路径选择器.any())
.build();
}
列表defaultAuth(){
授权范围授权范围
=新授权范围(“全局”、“访问一切”);
AuthorizationScope[]authorizationScopes=新的AuthorizationScope[1];
authorizationScopes[0]=authorizationScope;
return Lists.newArrayList(
新证券参考(“JWT”,授权范围);
}
私有ApiKey ApiKey(){
返回新的ApiKey(“JWT”、“授权”、“标题”);
}
然后,当您的招摇过市用户界面加载时,您将能够看到“授权”按钮
您可以保存您的代币,请确保在代币前面添加“持票人”
看一看