2016-05-23 2 views
0

Я создал плагин в бамбуке с одним модулем в нем.Bamboo Plugin REST модуль контроля доступа

atlassian-plugin.xml: 

<rest key="REST API Key" path="/plugin/myplugin/api" version="1.0"> 
    <description>Rest API for plugin</description> 
</rest> 

Теперь у меня есть класс с одним методом в нем:

@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(); 
    } 
} 

Эта конкретная конечная точка mybamboo.host:6990/rest/plugin/myplugin/api/config/user/add может быть доступна любому пользователю, имеющему доступ к этому конкретному экземпляру бамбука.

Теперь мой вопрос: возможно ли ограничить доступ к этой конечной точке только для бамбуковых администраторов, а не для всех пользователей?

Я знаю, что это возможно, используя классы действия веб-сайта, расширяя BambooActionSupport и реализуя интерфейс GlobalAdminSecurityAware. Но есть ли аналогичный способ выполнения такого контроля доступа в модуле отдыха?

ответ

1

По умолчанию все ресурсы для отдыха требуют, по меньшей мере, базовой проверки подлинности, см. 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(...){ 
    ... 
} 
Смежные вопросы