Bamboo Plugin REST 模块访问控制
Bamboo Plugin REST module access control
我在 bamboo 中创建了一个插件,其中包含一个模块。
atlassian-plugin.xml:
<rest key="REST API Key" path="/plugin/myplugin/api" version="1.0">
<description>Rest API for plugin</description>
</rest>
现在我有一个 class,里面有一个方法:
@Path("/config/user")
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public class UserService {
@PUT
@Path("/add")
public Response addUser(User user){
return Response.ok().build();
}
}
任何有权访问该特定 Bamboo 实例的用户都可以访问该特定端点 mybamboo.host:6990/rest/plugin/myplugin/api/config/user/add
。
现在我的问题是,是否可以只限制 bamboo 管理员而不是所有用户访问此端点?
我知道这可以通过扩展 BambooActionSupport 和实现 GlobalAdminSecurityAware 接口使用网络操作 classes 实现。但是在rest模块中有没有类似的方法来完成这种访问控制呢?
默认情况下,所有其他资源至少需要基本身份验证,请参阅Atlassian REST API Design Guidelines。
此外,您可以将 com.atlassian.sal.api.user.UserManager 注入您的休息服务并应用如下逻辑:
String username = userManager.getRemoteUsername();
if ( userManager.isAdmin(username) || userManager.isSystemAdmin(username) ){
.....
}else if isUserInGroup(...){
...
}
我在 bamboo 中创建了一个插件,其中包含一个模块。
atlassian-plugin.xml:
<rest key="REST API Key" path="/plugin/myplugin/api" version="1.0">
<description>Rest API for plugin</description>
</rest>
现在我有一个 class,里面有一个方法:
@Path("/config/user")
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public class UserService {
@PUT
@Path("/add")
public Response addUser(User user){
return Response.ok().build();
}
}
任何有权访问该特定 Bamboo 实例的用户都可以访问该特定端点 mybamboo.host:6990/rest/plugin/myplugin/api/config/user/add
。
现在我的问题是,是否可以只限制 bamboo 管理员而不是所有用户访问此端点?
我知道这可以通过扩展 BambooActionSupport 和实现 GlobalAdminSecurityAware 接口使用网络操作 classes 实现。但是在rest模块中有没有类似的方法来完成这种访问控制呢?
默认情况下,所有其他资源至少需要基本身份验证,请参阅Atlassian REST API Design Guidelines。
此外,您可以将 com.atlassian.sal.api.user.UserManager 注入您的休息服务并应用如下逻辑:
String username = userManager.getRemoteUsername();
if ( userManager.isAdmin(username) || userManager.isSystemAdmin(username) ){
.....
}else if isUserInGroup(...){
...
}