239.8. HTTP Basic 認証の使用
以下に示すように、Netty HTTP コンシューマーは、使用するセキュリティーレルム名を指定することにより、HTTP Basic 認証をサポートします。
<route> <from uri="netty-http:http://0.0.0.0:{{port}}/foo?securityConfiguration.realm=karaf"/> ... </route>
Basic 認証を有効にするには、レルム名が必須です。デフォルトでは、JAAS ベースのオーセンティケーターが使用されます。これは、指定されたレルム名 (上記の例では karaf) を使用し、JAAS レルムとこのレルムの JAAS \{{LoginModule}} を認証に使用します。
Apache Karaf/ServiceMix のエンドユーザーはすぐに使用できる karaf レルムを持っているため、上記の例がこれらのコンテナーですぐに機能する理由です。
239.8.1. Web リソースに ACL を指定する
org.apache.camel.component.netty.http.SecurityConstraint
を使用すると、Web リソースに対する制約を定義できます。また、org.apache.camel.component.netty.http.SecurityConstraintMapping
はすぐに使用できるように提供されており、ロールを使用してインクルージョンとエクスクルージョンを簡単に定義できます。
たとえば、XML DSL で以下に示すように、制約 Bean を定義します。
<bean id="constraint" class="org.apache.camel.component.netty.http.SecurityConstraintMapping"> <!-- inclusions defines url -> roles restrictions --> <!-- a * should be used for any role accepted (or even no roles) --> <property name="inclusions"> <map> <entry key="/*" value="*"/> <entry key="/admin/*" value="admin"/> <entry key="/guest/*" value="admin,guest"/> </map> </property> <!-- exclusions is used to define public urls, which requires no authentication --> <property name="exclusions"> <set> <value>/public/*</value> </set> </property> </bean>
上記の制約は、次のように定義されます。
- /* へのアクセスは制限され、すべてのロールが受け入れられます (ユーザーがロールを持っていない場合も同様)
- /admin/* へのアクセスには管理者ロールが必要です
- /guest/* へのアクセスには、管理者またはゲストのロールが必要です
- /public/* へのアクセスは、認証が不要であることを意味するエクスクルージョンであるため、ログインしなくても全員に公開されます
この制約を使用するには、以下に示すように Bean ID を参照するだけです。
<route> <from uri="netty-http:http://0.0.0.0:{{port}}/foo?matchOnUriPrefix=true&securityConfiguration.realm=karaf&securityConfiguration.securityConstraint=#constraint"/> ... </route>