私は JBoss-7 環境で RestEasy を使用しており、現在セキュリティ機能を実装しています。SSL 接続で HTTP Basic を使用しています。ヘッダー パラメーターの追加と評価は簡単です ( Passing parameters in the message header with a REST API のおかげです)。
@Provider @ServerInterceptor
public class RestSecurityInterceptor implements PreProcessInterceptor
{
@EJB MyBean fUser;
private MyUser user;
@Override
public ServerResponse preProcess(HttpRequest request, ResourceMethod method)
throws UnauthorizedException
{
// do some some stuff. If the request is authenticated I get a MyUser
user = ...
}
@Named @Produces @SessionScoped
public MyUser getCurrentUser() {return user;}
}
これは正常に機能し、REST サービスの@Produces
とも魅力のように機能します。@Inject
@Path("/rest")
public class MyService extends Application
{
@Inject private MyUser currentUser;
@GET @Path("/test")
public String test()
{
return "Hello "+currentUser.getName();
}
}
ここで私の質問:この方法で REST のセキュリティを実装しても安全ですか (HTTP Basic の賛否両論については議論したくありません。CDI に焦点を当てましょう)。特に、説明したようにCDIを使用できるかどうか、および適切なスコープを選択したかどうか疑問に思ってい@SessionScoped
ます?