2017-04-13 7 views
0

SO and the webの他の投稿に基づいて、ログインしているユーザーからロールを取得するためのサーブレット3+コンテナには組み込まれていないメカニズムがないように見えますが、ユーザーがロール内にいるかどうかを確認する必要があります。request.isUserInRole(String)Servlet 3+環境でユーザーロールを取得する方法はありますか?

しかし、アプリケーションのために定義されたセキュリティ・ロールのリストを取得する方法はありますか?

私はそれは奇妙なLoginModuleは校長の資格を保持しなければならないことがわかりますが、プリンシパルの役割に関連する定義されたもの/はありません。ある時点で、isInRole()に電話すると、コンテナはユーザーの割り当てられた役割のリストを確認できる必要があります。その情報はどこにも公開されていませんか?

私は私が私のデプロイメントディスクリプタ(または注釈経由)から定義されたロールを取得することを可能にする任意のメカニズムを見つけるように見えることはできません。私はWildfly 10/Undertowをターゲットにしていますが、理想的にはコンテナにとらわれないソリューションを探しています。

はこのさえ可能ですか?プログラム的に自分のアプリケーションで定義されてsecurity-role Sを取得するための簡単な方法は、(と私の記述で定義されているか、@DeclareRoles注釈を経由してのいずれか)がありますか?私はイントロスペクションを使用し@RolesAllowed注釈を取得するために

+0

http://stackoverflow.com/questions/344117/how-to-get-user-roles-in-a-jsp -servlet? –

+0

@RC。その質問は実際に質問に答えません(私は実際に私の質問でそれにリンクしています)。 Weblogicに固有の何かを行うか、アプリケーション内で手動で役割のリストを作成することを提案します。しかし、コンテナからそれらを取得するかどうか/指定する方法はありません。私はメカニズムがなければならないと思うが、どちらが確実かはわからない。 –

+0

あなたは[この投稿](http://stackoverflow.com/questions/4296910/is-it-possible-to-read-the-value-of-a-annotation-in-java)のようなものを使ってすべてを読むことができます注釈。最終的にこれはJEE仕様の一部ではありませんので、これを取得するためのプラットフォームにとらわれない方法はありません。いくつかの可能性のあるセキュリティの影響もあります - 私がいるすべての役割を知っていなければなりませんか?それについてはわかりませんが、ここでもスペックがあなたを助けてくれていません。 @EricB。 – stdunbar

答えて

0

。 アノテーションを使用して定義されたロールを取得することもできます。この例のthisはサーブレットです。

ServletSecurity ss = this.getClass().getAnnotation(ServletSecurity.class); 
for (String role : ss.value().rolesAllowed()) { 
     out.print(role + " "); 
} 

サーブレットでの注釈は次のとおりです。

@WebServlet(name = "Coquito", urlPatterns = {"/Coquito"}) 
@ServletSecurity (@HttpConstraint(rolesAllowed= {"nuevo_menu_intranet"})) 
public class Coquito extends HttpServlet { 
} 
関連する問題