2016-05-23 11 views
0

私はbambooに1つのモジュールを含むプラグインを作成しました。Bambooプラグイン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は竹の特定のインスタンスへのアクセス権を持つすべてのユーザーがアクセスすることができます。

私の質問は、このエンドポイントへのアクセスを竹の管理者だけに制限し、すべてのユーザーではないことですか?

これは、Webworkアクションクラスを使用してBambooActionSupportを拡張し、GlobalAdminSecurityAwareインターフェイスを実装することによって可能であることがわかりました。しかし、同様の方法で、この種のアクセス制御をレストモジュールで行うことはできますか?

答えて

1

デフォルトでは、すべての残りのリソースには少なくとも基本認証が必要です(Atlassian REST API Design Guidelinesを参照)。次のように

また、あなたのRESTサービスにcom.atlassian.sal.api.user.UserManagerを注入し、ロジックを適用することができます。

String username = userManager.getRemoteUsername(); 
if (userManager.isAdmin(username) || userManager.isSystemAdmin(username)){ 
    ..... 
}else if isUserInGroup(...){ 
    ... 
}