# translation of Tools.po to Japanese
# Noriko Mizumoto <noriko@redhat.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Tools\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-06-25 15:02+0000\n"
"PO-Revision-Date: 2009-02-17 15:35+0900\n"
"Last-Translator: Ken Yamada <ken@tydfam.jp>\n"
"Language-Team: Japanese <fedora-trans-ja@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"

#. Tag: title
#: Security.xml:4
#, no-c-format
msgid "Security"
msgstr "セキュリティ"

#. Tag: title
#: Security.xml:7
#, no-c-format
msgid "Overview"
msgstr "概要"

#. Tag: para
#: Security.xml:9
#, no-c-format
msgid ""
"The Seam Security API provides a multitude of security-related features for "
"your Seam-based application, covering such areas as:"
msgstr ""
"SeamのセキュリティAPIはSeamベースのアプリケーションに種々のセキュリティ関連機"
"能を提供します。 これらの機能には、以下のようなものがあります。"

#. Tag: para
#: Security.xml:16
#, no-c-format
msgid ""
"Authentication - an extensible, JAAS-based authentication layer that allows "
"users to authenticate against any security provider."
msgstr ""
"認証ー種々のセキュリティプロバイダによるユーザー認証を可能にする、拡張可能な"
"JAASベースの認証層を提供します"

#. Tag: para
#: Security.xml:22
#, no-c-format
msgid ""
"Identity Management - an API for managing a Seam application's users and "
"roles at runtime."
msgstr ""
"ID管理ーSeamアプリケーション動作時にユーザーとロールを管理するAPIを提供します"

#. Tag: para
#: Security.xml:27
#, no-c-format
msgid ""
"Authorization - an extremely comprehensive authorization framework, "
"supporting user roles, persistent and rule-based permissions, and a "
"pluggable permission resolver for easily implementing customised security "
"logic."
msgstr ""
"認可ーユーザーロール、永続的なルールをベースにしたパーミッションや、カスタマ"
"イズ可能でセキュリティロジックを簡単に実装できるプラグイン可能な許可リゾル"
"バーをサポートする、非常に包括的な、認可フレームワーク"

#. Tag: para
#: Security.xml:33
#, no-c-format
msgid ""
"Permission Management - a set of built-in Seam components to allow easy "
"management of an application's security policy."
msgstr ""
"パーミッション管理ーアプリケーションのセキュリティポリシーを容易に管理する事"
"を可能にする一連のSeam組み込みコンポーネント"

#. Tag: para
#: Security.xml:39
#, no-c-format
msgid ""
"CAPTCHA support - to assist in the prevention of automated software/scripts "
"abusing your Seam-based site."
msgstr ""
"CAPCHAのサポートーSeamで作られたサイトを自動検索プログラムスクリプトによる予"
"期しない動作から保護するための支援をします"

#. Tag: para
#: Security.xml:44
#, no-c-format
msgid "And much more"
msgstr "等々"

#. Tag: para
#: Security.xml:50
#, no-c-format
msgid "This chapter will cover each of these features in detail."
msgstr "この章ではこれらの機能の詳細について説明します"

#. Tag: title
#: Security.xml:57
#, no-c-format
msgid "Disabling Security"
msgstr "セキュリティの無効化"

#. Tag: para
#: Security.xml:59
#, fuzzy, no-c-format
msgid ""
"In some situations it may be necessary to disable Seam Security, for "
"instances during unit tests or because you are using a different approach to "
"security, such as native JAAS. Simply call the static method "
"<literal>Identity.setSecurityEnabled(false)</literal> to disable the "
"security infrastructure. Of course, it's not very convenient to have to call "
"a static method when you want to configure the application, so as an "
"alternative you can control this setting in components.xml:"
msgstr ""
"ユニットテスト時のように、状況によりSeamのセキュリティを無効化する必要がある"
"場合があります。 このような場合には、静的メソッド<literal>Identity."
"setSecurityEnabled(false)</literal>を呼ぶことによりセキュリティチェックを無効"
"にすることができます。 これにより、以下のセキュリティチェックが無効化されま"
"す。"

#. Tag: para
#: Security.xml:69
#, no-c-format
msgid "Entity Security"
msgstr "エンティティのセキュリティ"

#. Tag: para
#: Security.xml:72
#, no-c-format
msgid "Hibernate Security Interceptor"
msgstr "Hibernateセキュリティインタセプタ"

#. Tag: para
#: Security.xml:75
#, no-c-format
msgid "Seam Security Interceptor"
msgstr "Seamセキュリティインタセプタ"

#. Tag: para
#: Security.xml:78
#, no-c-format
msgid "Page restrictions"
msgstr "ページ単位の制約"

#. Tag: para
#: Security.xml:81
#, no-c-format
msgid "Servlet API security integration"
msgstr ""

#. Tag: para
#: Security.xml:85
#, no-c-format
msgid ""
"Assuming you are planning to take advantage of what Seam Security has to "
"offer, the rest of this chapter documents the plethora of options you have "
"for giving your user an identity in the eyes of the security model "
"(authentication) and locking down the application by establishing "
"constraints (authorization). Let's begin with the task of authentication "
"since that's the foundation of any security model."
msgstr ""

#. Tag: title
#: Security.xml:95
#, no-c-format
msgid "Authentication"
msgstr "認証"

#. Tag: para
#: Security.xml:97
#, no-c-format
msgid ""
"The authentication features provided by Seam Security are built upon JAAS "
"(Java Authentication and Authorization Service), and as such provide a "
"robust and highly configurable API for handling user authentication. "
"However, for less complex authentication requirements Seam offers a much "
"more simplified method of authentication that hides the complexity of JAAS."
msgstr ""
"Seam セキュリティの提供する認証機構は JAAS (Java Authentication and "
"Authorization Service) の上に構築されており、 ユーザー認証のための堅牢で設定"
"の自由度の高い API を提供しています。 しかしながら、 Seamで は JAAS の複雑さ"
"を隠蔽したより単純化された認証機構も提供しています。"

#. Tag: title
#: Security.xml:104
#, no-c-format
msgid "Configuring an Authenticator component"
msgstr "認証コンポーネントの設定"

#. Tag: para
#: Security.xml:107
#, no-c-format
msgid ""
"If you use Seam's Identity Management features (discussed later in this "
"chapter) then it is not necessary to create an authenticator component (and "
"you can skip this section)."
msgstr ""
"この章で解説するSeamのID管理機能を使用するのであれば、authenticator（認証）コ"
"ンポーネントを作成する必要はありませんのでこの章を飛ばしても結構です。"

#. Tag: para
#: Security.xml:113
#, no-c-format
msgid ""
"The simplified authentication method provided by Seam uses a built-in JAAS "
"login module, <literal>SeamLoginModule</literal>, which delegates "
"authentication to one of your own Seam components. This login module is "
"already configured inside Seam as part of a default application policy and "
"as such does not require any additional configuration files. It allows you "
"to write an authentication method using the entity classes that are provided "
"by your own application, or alternatively to authenticate with some other "
"third party provider. Configuring this simplified form of authentication "
"requires the <literal>identity</literal> component to be configured in "
"<literal>components.xml</literal>:"
msgstr ""
"単純な認証機構ではSeamアプリケーションのコンポーネントに認証を委ねる"
"<literal>SeamLoginModule</literal>（これは、Seamに内蔵されているJAASのログイ"
"ンモジュールです）を使います。 このログインモジュールはSeamのデフォルトのアプ"
"リケーションポリシーとして予め設定されていますので、新たに設定に追加する事な"
"く使用することができます。 また、作成したアプリケーションのエンティティクラス"
"を利用して、認証メソッドを記述したり、 サード―パーティのプロバイダを使った認"
"証をする事ができます。 この「単純な認証機構」を利用するためには"
"<literal>components.xml</literal>に下記のように<literal>identity</literal>コ"
"ンポーネントを設定する必要があります。"

#. Tag: programlisting
#: Security.xml:122
#, fuzzy, no-c-format
msgid ""
"<![CDATA[<components xmlns=\"http://jboss.org/schema/seam/components\"\n"
"            xmlns:core=\"http://jboss.org/schema/seam/core\"\n"
"            xmlns:security=\"http://jboss.org/schema/seam/security\"\n"
"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"            xsi:schemaLocation=\n"
"                \"http://jboss.org/schema/seam/components http://jboss.com/"
"products/seam/components-2.3.xsd\n"
"                 http://jboss.org/schema/seam/security http://jboss.com/"
"products/seam/security-2.3.xsd\">\n"
"\n"
"    <security:identity authenticate-method=\"#{authenticator.authenticate}\"/"
">\n"
"\n"
"</components>]]>"
msgstr ""
"<![CDATA[<components xmlns=\"http://jboss.org/schema/seam/components\"\n"
"            xmlns:core=\"http://jboss.org/schema/seam/core\"\n"
"            xmlns:security=\"http://jboss.org/schema/seam/security\"\n"
"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"            xsi:schemaLocation=\n"
"                \"http://jboss.org/schema/seam/components http://jboss.com/"
"products/seam/components-2.1.xsd\n"
"                 http://jboss.org/schema/seam/security http://jboss.com/"
"products/seam/security-2.1.xsd\">\n"
"\n"
"    <security:identity authenticate-method=\"#{authenticator.authenticate}\"/"
">\n"
"\n"
"</components>]]>"

#. Tag: para
#: Security.xml:124
#, no-c-format
msgid ""
"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
"method binding that indicates the <literal>authenticate</literal> method of "
"the <literal>authenticator</literal> component will be used to authenticate "
"the user."
msgstr ""
"EL式 <literal>#{authenticator.authenticate}</literal> は"
"<literal>authenticator</literal>コンポーネントの<literal>authenticate</"
"literal>メソッドを使って、ユーザーの認証を行うことを示すメソッドバインディン"
"グです。"

#. Tag: title
#: Security.xml:133
#, no-c-format
msgid "Writing an authentication method"
msgstr "認証メソッドの記述"

#. Tag: para
#: Security.xml:135
#, no-c-format
msgid ""
"The <literal>authenticate-method</literal> property specified for "
"<literal>identity</literal> in <literal>components.xml</literal> specifies "
"which method will be used by <literal>SeamLoginModule</literal> to "
"authenticate users. This method takes no parameters, and is expected to "
"return a boolean, which indicates whether authentication is successful or "
"not. The user's username and password can be obtained from "
"<literal>Credentials.getUsername()</literal> and <literal>Credentials."
"getPassword()</literal>, respectively (you can get a reference to the "
"<literal>credentials</literal> component via <literal>Identity.instance()."
"getCredentials()</literal>). Any roles that the user is a member of should "
"be assigned using <literal>Identity.addRole()</literal>. Here's a complete "
"example of an authentication method inside a POJO component:"
msgstr ""
"<literal>components.xml</literal> 中の<literal>identity</literal>の"
"<literal>authenticate-method</literal>プロパティで<literal>SeamLoginModule</"
"literal>にユーザーの認証に使うメソッドを指定します。 このメソッドはパラメータ"
"を取らず、認証が成功したか否かのboolean型を返します。 ユーザーのusernameと"
"passwordは<literal>Credentials.getUsername()</literal> と "
"<literal>Credentials.getPassword()</literal>からそれぞれ取得します（また、"
"<literal>Identity.instance().getCredentials()</literal>から"
"<literal>credentials</literal>コンポーネントを参照する事もできます）。 ユー"
"ザーがメンバーとして参加するロールは<literal>Identity.addRole()</literal>によ"
"り指定される必要があります。 以下にPOJOコンポーネント中の認証メソッドの完全な"
"例を示します。"

#. Tag: programlisting
#: Security.xml:147
#, no-c-format
msgid ""
"<![CDATA[@Name(\"authenticator\")\n"
"public class Authenticator {\n"
"   @In EntityManager entityManager;\n"
"   @In Credentials credentials;\n"
"   @In Identity identity;\n"
"\n"
"   public boolean authenticate() {\n"
"      try {\n"
"         User user = (User) entityManager.createQuery(\n"
"            \"from User where username = :username and password = :password"
"\")\n"
"            .setParameter(\"username\", credentials.getUsername())\n"
"            .setParameter(\"password\", credentials.getPassword())\n"
"            .getSingleResult();\n"
"\n"
"         if (user.getRoles() != null) {\n"
"            for (UserRole mr : user.getRoles())\n"
"               identity.addRole(mr.getName());\n"
"         }\n"
"\n"
"         return true;\n"
"      }\n"
"      catch (NoResultException ex) {\n"
"         return false;\n"
"      }\n"
"\n"
"   }\n"
"\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"authenticator\")\n"
"public class Authenticator {\n"
"   @In EntityManager entityManager;\n"
"   @In Credentials credentials;\n"
"   @In Identity identity;\n"
"\n"
"   public boolean authenticate() {\n"
"      try {\n"
"         User user = (User) entityManager.createQuery(\n"
"            \"from User where username = :username and password = :password"
"\")\n"
"            .setParameter(\"username\", credentials.getUsername())\n"
"            .setParameter(\"password\", credentials.getPassword())\n"
"            .getSingleResult();\n"
"\n"
"         if (user.getRoles() != null) {\n"
"            for (UserRole mr : user.getRoles())\n"
"               identity.addRole(mr.getName());\n"
"         }\n"
"\n"
"         return true;\n"
"      }\n"
"      catch (NoResultException ex) {\n"
"         return false;\n"
"      }\n"
"\n"
"   }\n"
"\n"
"}]]>"

#. Tag: para
#: Security.xml:149
#, no-c-format
msgid ""
"In the above example, both <literal>User</literal> and <literal>UserRole</"
"literal> are application-specific entity beans. The <literal>roles</literal> "
"parameter is populated with the roles that the user is a member of, which "
"should be added to the <literal>Set</literal> as literal string values, e.g. "
"\"admin\", \"user\". In this case, if the user record is not found and a "
"<literal>NoResultException</literal> thrown, the authentication method "
"returns <literal>false</literal> to indicate the authentication failed."
msgstr ""
"上記の例では、<literal>User</literal>と<literal>UserRole</literal>はアプリ"
"ケーション独自のエンティティBeanとなっています。 パラメータ <literal>roles</"
"literal> は \"admin\", \"user\" の様に文字列として、<literal>Set</literal>に"
"追加されてゆく必要があります。 この例の場合、userが見付からずに"
"<literal>NoResultException</literal>が投げられた場合には、認証メソッドは"
"<literal>false</literal>を返して、認証が失敗したことを示します。"

#. Tag: para
#: Security.xml:158
#, no-c-format
msgid ""
"When writing an authenticator method, it is important that it is kept "
"minimal and free from any side-effects. This is because there is no "
"guarantee as to how many times the authenticator method will be called by "
"the security API, and as such it may be invoked multiple times during a "
"single request. Because of this, any special code that should execute upon a "
"successful or failed authentication should be written by implementing an "
"event observer. See the section on Security Events further down in this "
"chapter for more information about which events are raised by Seam Security."
msgstr ""
"認証メソッドを記述する場合、副次的な影響を受けない、あるいは影響が最小になる"
"ようにすることが重要です。 これは、セキュリティAPIにより何回認証メソッドが呼"
"び出されるのか保証が無く、一回の要求で複数回実行されることもあるからです。 こ"
"のため、認証が成功あるいは失敗した時に実行されるコードはイベントオブザーバを"
"利用して記述されるべきです。 Seamのセキュリティにより発生するイベントについて"
"の詳細はこの章の後半に記載されています。"

#. Tag: title
#: Security.xml:170
#, no-c-format
msgid "Identity.addRole()"
msgstr "Identity.addRole()"

#. Tag: para
#: Security.xml:172
#, no-c-format
msgid ""
"The <literal>Identity.addRole()</literal> method behaves differently "
"depending on whether the current session is authenticated or not. If the "
"session is not authenticated, then <literal>addRole()</literal> should "
"<emphasis>only</emphasis> be called during the authentication process. When "
"called here, the role name is placed into a temporary list of pre-"
"authenticated roles. Once authentication is successful, the pre-"
"authenticated roles then become \"real\" roles, and calling "
"<literal>Identity.hasRole()</literal> for those roles will then return true. "
"The following sequence diagram represents the list of pre-authenticated "
"roles as a first class object to show more clearly how it fits in to the "
"authentication process."
msgstr ""
"<literal>Identity.addRole()</literal>メソッドは現在のユーザーが認証されている"
"か否かで動作が異なります。 認証されていないセッションの場合には、"
"<literal>addRole()</literal>は認証過程でのみ呼び出され、指定されたロールは、"
"認証されていないロールの仮のリストに登録され、認証が成功すると、仮のロールか"
"ら実際のロールに移行し、このロールで<literal>Identity.hasRole()</literal>が実"
"行され、trueが返されます。 以下のシークエンス図に、仮の認証ロールリストの認証"
"プロセスにおける役割について示します。"

#. Tag: para
#: Security.xml:192
#, no-c-format
msgid ""
"If the current session is already authenticated, then calling "
"<literal>Identity.addRole()</literal> will have the expected effect of "
"immediately granting the specified role to the current user."
msgstr ""
"カレントセッションがすでに認証されている場合に<literal>Identity.addRole()</"
"literal> を呼ぶと指定されたロールが即座に現在のユーザーに付与されます。"

#. Tag: title
#: Security.xml:200
#, no-c-format
msgid "Writing an event observer for security-related events"
msgstr "セキュリティ関連のイベントのためのオブザーバの記述"

#. Tag: para
#: Security.xml:202
#, no-c-format
msgid ""
"Say for example, that upon a successful login that some user statistics must "
"be updated. This would be done by writing an event observer for the "
"<literal>org.jboss.seam.security.loginSuccessful</literal> event, like this:"
msgstr ""
"例として、ログインに成功する度にユーザーの統計データを更新する場合を考えてみ"
"ましょう。 これは、<literal>org.jboss.seam.security.loginSuccessful</literal>"
"イベントのオブザーバを記述する事により、以下のように実現できます。"

#. Tag: programlisting
#: Security.xml:208
#, no-c-format
msgid ""
"<![CDATA[   @In UserStats userStats;\n"
"\n"
"   @Observer(\"org.jboss.seam.security.loginSuccessful\")\n"
"   public void updateUserStats()\n"
"   {\n"
"      userStats.setLastLoginDate(new Date());\n"
"      userStats.incrementLoginCount();\n"
"   }]]>"
msgstr ""
"<![CDATA[   @In UserStats userStats;\n"
"\n"
"   @Observer(\"org.jboss.seam.security.loginSuccessful\")\n"
"   public void updateUserStats()\n"
"   {\n"
"      userStats.setLastLoginDate(new Date());\n"
"      userStats.incrementLoginCount();\n"
"   }]]>"

#. Tag: para
#: Security.xml:210
#, no-c-format
msgid ""
"This observer method can be placed anywhere, even in the Authenticator "
"component itself. You can find more information about security-related "
"events later in this chapter."
msgstr ""
"このオブザーバメソッドは、Authenticatorコンポーネントを含め、どこにおいても構"
"いません。 セキュリティ関連のイベントについてこの章でさらに見てゆきます。"

#. Tag: title
#: Security.xml:219
#, no-c-format
msgid "Writing a login form"
msgstr "ログインフォームの記述"

#. Tag: para
#: Security.xml:221
#, no-c-format
msgid ""
"The <literal>credentials</literal> component provides both "
"<literal>username</literal> and <literal>password</literal> properties, "
"catering for the most common authentication scenario. These properties can "
"be bound directly to the username and password fields on a login form. Once "
"these properties are set, calling <literal>identity.login()</literal> will "
"authenticate the user using the provided credentials. Here's an example of a "
"simple login form:"
msgstr ""
" <literal>credentials</literal> コンポーネントは<literal>username</literal>お"
"よび<literal>password</literal>属性を保持しており、一般的な認証処理に対応でき"
"るようになっています。 これらの属性はログインフォームのusernameとpassword"
"フィールドに直接バインドする事が可能です。 これらの属性が設定されてしまえば、"
"後は<literal>identity.login()</literal>を呼び出すことにより、保持されている"
"usernameとpasswordによるユーザーの認証が行われます。簡単なログインフォームの"
"例を示します。"

#. Tag: programlisting
#: Security.xml:229
#, no-c-format
msgid ""
"<![CDATA[<div>\n"
"    <h:outputLabel for=\"name\" value=\"Username\"/>\n"
"    <h:inputText id=\"name\" value=\"#{credentials.username}\"/>\n"
"</div>\n"
"\n"
"<div>\n"
"    <h:outputLabel for=\"password\" value=\"Password\"/>\n"
"    <h:inputSecret id=\"password\" value=\"#{credentials.password}\"/>\n"
"</div>\n"
"\n"
"<div>\n"
"    <h:commandButton value=\"Login\" action=\"#{identity.login}\"/>\n"
"</div>]]>"
msgstr ""
"<![CDATA[<div>\n"
"    <h:outputLabel for=\"name\" value=\"Username\"/>\n"
"    <h:inputText id=\"name\" value=\"#{credentials.username}\"/>\n"
"</div>\n"
"\n"
"<div>\n"
"    <h:outputLabel for=\"password\" value=\"Password\"/>\n"
"    <h:inputSecret id=\"password\" value=\"#{credentials.password}\"/>\n"
"</div>\n"
"\n"
"<div>\n"
"    <h:commandButton value=\"Login\" action=\"#{identity.login}\"/>\n"
"</div>]]>"

#. Tag: para
#: Security.xml:231
#, no-c-format
msgid ""
"Similarly, logging out the user is done by calling <literal>#{identity."
"logout}</literal>. Calling this action will clear the security state of the "
"currently authenticated user, and invalidate the user's session."
msgstr ""
"（loginと）同様にログアウトも、<literal>#{identity.logout}</literal>を呼び出"
"すことにより実行されます。ログアウトを実行することにより、現在認証されている"
"ユーザーのセキュリティの状態をクリアし、セッションは無効化されます。"

#. Tag: title
#: Security.xml:239
#, no-c-format
msgid "Configuration Summary"
msgstr "設定のまとめ"

#. Tag: para
#: Security.xml:240
#, no-c-format
msgid ""
"So to sum up, there are the three easy steps to configure authentication:"
msgstr ""
"まとめとして、認証システムを設定するためには、以下の三つのステップが必要とな"
"ります。"

#. Tag: para
#: Security.xml:246
#, no-c-format
msgid ""
"Configure an authentication method in <literal>components.xml</literal>."
msgstr "認証メソッドを<literal>components.xml</literal>に設定する。"

#. Tag: para
#: Security.xml:251
#, no-c-format
msgid "Write an authentication method."
msgstr "認証メソッドを記述する。"

#. Tag: para
#: Security.xml:256
#, no-c-format
msgid "Write a login form so that the user can authenticate."
msgstr "ユーザーを認証するためのログインフォームを記述する。"

#. Tag: title
#: Security.xml:265
#, no-c-format
msgid "Remember Me"
msgstr "Remember Me （覚えておいて！）"

#. Tag: para
#: Security.xml:267
#, no-c-format
msgid ""
"Seam Security supports the same kind of \"Remember Me\" functionality that "
"is commonly encountered in many online web-based applications. It is "
"actually supported in two different \"flavours\", or modes - the first mode "
"allows the username to be stored in the user's browser as a cookie, and "
"leaves the entering of the password up to the browser (many modern browsers "
"are capable of remembering passwords)."
msgstr ""
"Seamのセキュリティ機能ではオンラインのWEBアプリケーションで一般的に提供されて"
"いる\"Remember me\"(覚えておいてね）機能をサポートしています。 この機能は、二"
"つの異なったモードをサポートしており、一つはusernameをユーザーのブラウザに"
"クッキーとして保存し、ブラウザからpasswordの入力を促すものです（この場合で"
"も、最近のほとんどのブラウザは、passwordを記憶しています）。"

#. Tag: para
#: Security.xml:274
#, no-c-format
msgid ""
"The second mode supports the storing of a unique token in a cookie, and "
"allows a user to authenticate automatically upon returning to the site, "
"without having to provide a password."
msgstr ""
"第2のモードはユニークなトークンをクッキーとして記憶しておいて、そのサイトに入"
"ると、passwordの入力をする事なく自動的にユーザーの認証をする機能をサポートす"
"るものです。"

#. Tag: para
#: Security.xml:280
#, no-c-format
msgid ""
"Automatic client authentication with a persistent cookie stored on the "
"client machine is dangerous. While convenient for users, any cross-site "
"scripting security hole in your website would have dramatically more serious "
"effects than usual. Without the authentication cookie, the only cookie to "
"steal for an attacker with XSS is the cookie of the current session of a "
"user. This means the attack only works when the user has an open session - "
"which should be a short timespan. However, it is much more attractive and "
"dangerous if an attacker has the possibility to steal a persistent Remember "
"Me cookie that allows him to login without authentication, at any time. Note "
"that this all depends on how well you protect your website against XSS "
"attacks - it's up to you to make sure that your website is 100% XSS safe - a "
"non-trival achievement for any website that allows user input to be rendered "
"on a page."
msgstr ""
"クライアント側の永続的なクッキーによる自動的な認証（第2のモード）は危険で、"
"ユーザーへの利便性は向上しますが、クロスサイトスクリプティングに対するセキュ"
"リティホールの影響を通常より遥かに重大な物としてしまいます。 認証のためのクッ"
"キーでなければ、XSSにより攻撃者に盗まれるクッキーは、現在のセッションのユー"
"ザーのクッキーという事になります。 これは、ユーザーがセッションを開いていなけ"
"れば攻撃が有効でないことを意味し、攻撃可能な時間が非常に短い事を意味します。 "
"攻撃者が自動認証をサポートする永続的なRemember meクッキーを盗む可能性があると"
"すれば、それはたいへん危険なことです。  この機能の利用の危険性は、システムが"
"XSS攻撃に対してどれだけ防御できているのかに依存し、XSS攻撃に対して100％の防御"
"を保証している必要がありますが、入力内容をWEBページに表示するようなサイトに"
"とって、これは簡単ではありません。"

#. Tag: para
#: Security.xml:291
#, no-c-format
msgid ""
"Browser vendors recognized this issue and introduced a \"Remember Passwords"
"\" feature - today almost all browsers support this. Here, the browser "
"remembers the login username and password for a particular website and "
"domain, and fills out the login form automatically when you don't have an "
"active session with the website. If you as a website designer then offer a "
"convenient login keyboard shortcut, this approach is almost as convenient as "
"a \"Remember Me\" cookie and much safer. Some browsers (e.g. Safari on OS X) "
"even store the login form data in the encrypted global operation system "
"keychain. Or, in a networked environment, the keychain can be transported "
"with the user (between laptop and desktop for example), while browser "
"cookies are usually not synchronized."
msgstr ""
"ブラウザのベンダーはこの問題を認識しており、最近のブラウザでは新たに導入され"
"たRemember Passwordをサポートしています。 この場合は、ブラウザは特定のドメイ"
"ン、ウェブサイトに対してのusernameとpasswordを記憶しており、ウェブサイトとの"
"セッションがアクティブでない状態で、ログインフォームのusernameとpasswordを自"
"動的に埋めてゆきます。 ウェブデザイナの立場であれば、ログインのためのショート"
"カットキーを設定しておけば、Remember Meと同様にユーザーの利便性を向上させるこ"
"とができます。 OS-xのSafariなど一部のブラウザでは、OSのキーチェインに暗号化し"
"たログインのフォームを記憶させています。 また、ブラウザのクッキーは一般に同期"
"化させることはできませんが、ネットワーク環境ではこのキーチェインはラップトッ"
"プからデスクトップへと移動させることができます。"

#. Tag: para
#: Security.xml:301
#, no-c-format
msgid ""
"To summarize: While everyone is doing it, persistent \"Remember Me\" cookies "
"with automatic authentication are a bad practice and should not be used. "
"Cookies that \"remember\" only the users login name, and fill out the login "
"form with that username as a convenience, are not an issue."
msgstr ""
"まとめ：自動認証をする永続的なRemember Meの使用は一般化してしまっていますが、"
"セキュリティ上、不適切であり使用すべきではありません。 ログイン時のusernameの"
"みを記憶するクッキーを使用することには問題はありません。"

#. Tag: para
#: Security.xml:308
#, no-c-format
msgid ""
"To enable the remember me feature for the default (safe, username only) "
"mode, no special configuration is required. In your login form, simply bind "
"the remember me checkbox to <literal>rememberMe.enabled</literal>, like in "
"the following example:"
msgstr ""
"デフォルトのRemember me(usernameのみ）機能を使用するためには、特に設定は必要"
"ありません。 下の例のように、ログインフォームにremember meチェックボックスを"
"入れて、これを<literal>rememberMe.enabled</literal>とバインドするだけです。"

#. Tag: programlisting
#: Security.xml:314
#, no-c-format
msgid ""
"<![CDATA[  <div>\n"
"    <h:outputLabel for=\"name\" value=\"User name\"/>\n"
"    <h:inputText id=\"name\" value=\"#{credentials.username}\"/>\n"
"  </div>\n"
"  \n"
"  <div>\n"
"    <h:outputLabel for=\"password\" value=\"Password\"/>\n"
"    <h:inputSecret id=\"password\" value=\"#{credentials.password}\" "
"redisplay=\"true\"/>\n"
"  </div>      \n"
"  \n"
"  <div class=\"loginRow\">\n"
"    <h:outputLabel for=\"rememberMe\" value=\"Remember me\"/>\n"
"    <h:selectBooleanCheckbox id=\"rememberMe\" value=\"#{rememberMe.enabled}"
"\"/>\n"
"  </div>]]>"
msgstr ""
"<![CDATA[  <div>\n"
"    <h:outputLabel for=\"name\" value=\"User name\"/>\n"
"    <h:inputText id=\"name\" value=\"#{credentials.username}\"/>\n"
"  </div>\n"
"  \n"
"  <div>\n"
"    <h:outputLabel for=\"password\" value=\"Password\"/>\n"
"    <h:inputSecret id=\"password\" value=\"#{credentials.password}\" "
"redisplay=\"true\"/>\n"
"  </div>      \n"
"  \n"
"  <div class=\"loginRow\">\n"
"    <h:outputLabel for=\"rememberMe\" value=\"Remember me\"/>\n"
"    <h:selectBooleanCheckbox id=\"rememberMe\" value=\"#{rememberMe.enabled}"
"\"/>\n"
"  </div>]]>"

#. Tag: title
#: Security.xml:317
#, no-c-format
msgid "Token-based Remember-me Authentication"
msgstr "トークンベースのremember me認証"

#. Tag: para
#: Security.xml:319
#, no-c-format
msgid ""
"To use the automatic, token-based mode of the remember me feature, you must "
"first configure a token store. The most common scenario is to store these "
"authentication tokens within a database (which Seam supports), however it is "
"possible to implement your own token store by implementing the <literal>org."
"jboss.seam.security.TokenStore</literal> interface. This section will assume "
"you will be using the provided <literal>JpaTokenStore</literal> "
"implementation to store authentication tokens inside a database table."
msgstr ""
"トークンベースの自動認証機能の remember me を使用するためには、まずトークンの"
"記憶場所を設定する必要があります。 Seamでもサポートしていますが、このトークン"
"の記憶場所としてはデータベースが一般的です。 しかし、<literal>org.jboss.seam."
"security.TokenStore</literal> インタフェースを実装して独自の記憶場所を設定す"
"ることも可能です。 この章では標準で提供されている<literal>JpaTokenStore</"
"literal>実装を使用して認証トークンをデータベーステーブルに記憶させることを前"
"提としています。"

#. Tag: para
#: Security.xml:327
#, no-c-format
msgid ""
"The first step is to create a new Entity which will contain the tokens. The "
"following example shows a possible structure that you may use:"
msgstr ""
"まず最初に、トークンを保持する新たなエンティティを作ります。 以下に、一般的な"
"エンティティの構造を示します。"

#. Tag: programlisting
#: Security.xml:332
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"public class AuthenticationToken implements Serializable {  \n"
"   private Integer tokenId;\n"
"   private String username;\n"
"   private String value;\n"
"   \n"
"   @Id @GeneratedValue\n"
"   public Integer getTokenId() {\n"
"      return tokenId;\n"
"   }\n"
"   \n"
"   public void setTokenId(Integer tokenId) {\n"
"      this.tokenId = tokenId;\n"
"   }\n"
"   \n"
"   @TokenUsername\n"
"   public String getUsername() {\n"
"      return username;\n"
"   }\n"
"   \n"
"   public void setUsername(String username) {\n"
"      this.username = username;\n"
"   }\n"
"   \n"
"   @TokenValue\n"
"   public String getValue() {\n"
"      return value;\n"
"   }\n"
"   \n"
"   public void setValue(String value) {\n"
"      this.value = value;\n"
"   }\n"
"}]]>"
msgstr ""
"<![CDATA[@Entity\n"
"public class AuthenticationToken implements Serializable {  \n"
"   private Integer tokenId;\n"
"   private String username;\n"
"   private String value;\n"
"   \n"
"   @Id @GeneratedValue\n"
"   public Integer getTokenId() {\n"
"      return tokenId;\n"
"   }\n"
"   \n"
"   public void setTokenId(Integer tokenId) {\n"
"      this.tokenId = tokenId;\n"
"   }\n"
"   \n"
"   @TokenUsername\n"
"   public String getUsername() {\n"
"      return username;\n"
"   }\n"
"   \n"
"   public void setUsername(String username) {\n"
"      this.username = username;\n"
"   }\n"
"   \n"
"   @TokenValue\n"
"   public String getValue() {\n"
"      return value;\n"
"   }\n"
"   \n"
"   public void setValue(String value) {\n"
"      this.value = value;\n"
"   }\n"
"}]]>"

#. Tag: para
#: Security.xml:334
#, no-c-format
msgid ""
"As you can see from this listing, a couple of special annotations, "
"<literal>@TokenUsername</literal> and <literal>@TokenValue</literal> are "
"used to configure the username and token properties of the entity. These "
"annotations are required for the entity that will contain the authentication "
"tokens."
msgstr ""
"このコードから分かるように、エンティティのusernameとトークンのプロパティには"
"<literal>@TokenUsername</literal> と<literal>@TokenValue</literal>という特別"
"なアノテーションが使われており、これらは認証トークンを含むエンティティに必須"
"です。"

#. Tag: para
#: Security.xml:340
#, no-c-format
msgid ""
"The next step is to configure <literal>JpaTokenStore</literal> to use this "
"entity bean to store and retrieve authentication tokens. This is done in "
"<literal>components.xml</literal> by specifying the <literal>token-class</"
"literal> attribute:"
msgstr ""
"次に、このエンティティBeanに対して認証トークンの出し入れをするために、 "
"<literal>JpaTokenStore</literal>を設定します。 これは、 <literal>components."
"xml</literal> に<literal>token-class</literal>属性を指定することにより行いま"
"す。"

#. Tag: programlisting
#: Security.xml:346
#, no-c-format
msgid ""
"<![CDATA[\n"
"  <security:jpa-token-store token-class=\"org.jboss.seam.example.seamspace."
"AuthenticationToken\"/>        \n"
"        ]]>"
msgstr ""
"<![CDATA[\n"
"  <security:jpa-token-store token-class=\"org.jboss.seam.example.seamspace."
"AuthenticationToken\"/>        \n"
"        ]]>"

#. Tag: para
#: Security.xml:348
#, no-c-format
msgid ""
"Once this is done, the last thing to do is to configure the "
"<literal>RememberMe</literal> component in <literal>components.xml</literal> "
"also. Its <literal>mode</literal> should be set to <literal>autoLogin</"
"literal>:"
msgstr ""
"ここまでが終了したら、最後は<literal>components.xml</literal> に"
"<literal>RememberMe</literal>コンポーネントの設定をする事です。 "
"<literal>mode</literal>は<literal>autoLogin</literal>に設定されていなければな"
"りません。"

#. Tag: programlisting
#: Security.xml:353
#, no-c-format
msgid ""
"<![CDATA[  <security:remember-me mode=\"autoLogin\"/>        \n"
"        ]]>"
msgstr ""
"<![CDATA[  <security:remember-me mode=\"autoLogin\"/>        \n"
"        ]]>"

#. Tag: para
#: Security.xml:355
#, no-c-format
msgid ""
"That is all that is required - automatic authentication will now occur for "
"users revisiting your site (as long as they check the \"remember me\" "
"checkbox)."
msgstr ""
"これで、remember meをチェックしているユーザーがサイトを再訪した時に、自動的に"
"認証されるようになります。"

#. Tag: para
#: Security.xml:360
#, no-c-format
msgid ""
"To ensure that users are automatically authenticated when returning to the "
"site, the following section should be placed in components.xml:"
msgstr ""
"ユーザーがサイトを再訪した時に確実に自動的に認証される様にするために、"
"<literal>components.xml</literal>に以下が含まれている必要があります。"

#. Tag: programlisting
#: Security.xml:365
#, no-c-format
msgid ""
"<![CDATA[  <event type=\"org.jboss.seam.security.notLoggedIn\">\n"
"    <action execute=\"#{redirect.captureCurrentView}\"/>\n"
"    <action execute=\"#{identity.tryLogin()}\"/>\n"
"  </event>\n"
"  <event type=\"org.jboss.seam.security.loginSuccessful\">\n"
"    <action execute=\"#{redirect.returnToCapturedView}\"/>\n"
"  </event>]]>"
msgstr ""
"<![CDATA[  <event type=\"org.jboss.seam.security.notLoggedIn\">\n"
"    <action execute=\"#{redirect.captureCurrentView}\"/>\n"
"    <action execute=\"#{identity.tryLogin()}\"/>\n"
"  </event>\n"
"  <event type=\"org.jboss.seam.security.loginSuccessful\">\n"
"    <action execute=\"#{redirect.returnToCapturedView}\"/>\n"
"  </event>]]>"

#. Tag: title
#: Security.xml:372
#, no-c-format
msgid "Handling Security Exceptions"
msgstr "セキュリティ例外の処理"

#. Tag: para
#: Security.xml:374
#, no-c-format
msgid ""
"To prevent users from receiving the default error page in response to a "
"security error, it's recommended that <literal>pages.xml</literal> is "
"configured to redirect security errors to a more \"pretty\" page. The two "
"main types of exceptions thrown by the security API are:"
msgstr ""
"セキュリティエラーでユーザーがデフォルトのエラーページを受け取らないようにす"
"るために、<literal>pages.xml</literal>にセキュリティエラーに対応した、もう少"
"し見栄えのするページにリダイレクトするよう設定する事が推奨されます。 セキュリ"
"ティAPIの発生させる例外には主として二つのタイプがあります。"

#. Tag: para
#: Security.xml:382
#, no-c-format
msgid ""
"<literal>NotLoggedInException</literal> - This exception is thrown if the "
"user attempts to access a restricted action or page when they are not logged "
"in."
msgstr ""
"<literal>NotLoggedInException</literal> - ユーザーがログインすることなく、特"
"定のページ閲覧、或は特定の操作を実行しようとしたときに投げられます。"

#. Tag: para
#: Security.xml:388
#, no-c-format
msgid ""
"<literal>AuthorizationException</literal> - This exception is only thrown if "
"the user is already logged in, and they have attempted to access a "
"restricted action or page for which they do not have the necessary "
"privileges."
msgstr ""
"<literal>AuthorizationException</literal> - ユーザーが既にログインしていて、"
"当該ユーザーが許可されていないページの閲覧、或は操作を行おうとしたときに投げ"
"られます。"

#. Tag: para
#: Security.xml:396
#, no-c-format
msgid ""
"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
"that the user is redirected to either a login or registration page so that "
"they can log in. For an <literal>AuthorizationException</literal>, it may be "
"useful to redirect the user to an error page. Here's an example of a "
"<literal>pages.xml</literal> file that redirects both of these security "
"exceptions:"
msgstr ""
"<literal>NotLoggedInException</literal>の場合、ユーザーがログインできるよう、"
"ユーザーをログインページかユーザー登録ページへ誘導する事が推奨されます。 一"
"方、<literal>AuthorizationException</literal>の場合にはユーザーをエラーページ"
"に誘導した方が良いでしょう。 以下の例では、この二つのセキュリティ例外によるリ"
"ダイレクトを処理している<literal>pages.xml</literal>を示しています。"

#. Tag: programlisting
#: Security.xml:403
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"\n"
"    ...\n"
"\n"
"    <exception class=\"org.jboss.seam.security.NotLoggedInException\">\n"
"        <redirect view-id=\"/login.xhtml\">\n"
"            <message>You must be logged in to perform this action</message>\n"
"        </redirect>\n"
"    </exception>\n"
"\n"
"    <exception class=\"org.jboss.seam.security.AuthorizationException\">\n"
"        <end-conversation/>\n"
"        <redirect view-id=\"/security_error.xhtml\">\n"
"            <message>You do not have the necessary security privileges to "
"perform this action.</message>\n"
"        </redirect>\n"
"    </exception>\n"
"\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"\n"
"    ...\n"
"\n"
"    <exception class=\"org.jboss.seam.security.NotLoggedInException\">\n"
"        <redirect view-id=\"/login.xhtml\">\n"
"            <message>You must be logged in to perform this action</message>\n"
"        </redirect>\n"
"    </exception>\n"
"\n"
"    <exception class=\"org.jboss.seam.security.AuthorizationException\">\n"
"        <end-conversation/>\n"
"        <redirect view-id=\"/security_error.xhtml\">\n"
"            <message>You do not have the necessary security privileges to "
"perform this action.</message>\n"
"        </redirect>\n"
"    </exception>\n"
"\n"
"</pages>]]>"

#. Tag: para
#: Security.xml:405
#, no-c-format
msgid ""
"Most web applications require even more sophisticated handling of login "
"redirection, so Seam includes some special functionality for handling this "
"problem."
msgstr ""
"ほとんどのwebアプリケーションでは、より洗練されたログインリダイレクトを必要と"
"しますが、Seamではこの様なケースに対応できるような機能も持たせています。"

#. Tag: title
#: Security.xml:413
#, no-c-format
msgid "Login Redirection"
msgstr "ログインリダイレクト"

#. Tag: para
#: Security.xml:415
#, no-c-format
msgid ""
"You can ask Seam to redirect the user to a login screen when an "
"unauthenticated user tries to access a particular view (or wildcarded view "
"id) as follows:"
msgstr ""
"認証されていないユーザーが特定のビュー（或はワイルドカードで指定された複数の"
"ビュー）の閲覧をしようとした時に、Seamがユーザーをログイン画面にリダイレクト"
"するようにするためには (<literal>pages.xml</literal>に) 下のように記述しま"
"す。"

#. Tag: programlisting
#: Security.xml:420
#, no-c-format
msgid ""
"<![CDATA[<pages login-view-id=\"/login.xhtml\">\n"
"\n"
"    <page view-id=\"/members/*\" login-required=\"true\"/>\n"
"\n"
"    ...\n"
"\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages login-view-id=\"/login.xhtml\">\n"
"\n"
"    <page view-id=\"/members/*\" login-required=\"true\"/>\n"
"\n"
"    ...\n"
"\n"
"</pages>]]>"

#. Tag: para
#: Security.xml:423
#, no-c-format
msgid ""
"This is less of a blunt instrument than the exception handler shown above, "
"but should probably be used in conjunction with it."
msgstr ""
"これは、前項までの例外処理に比べて少々ぶっきらぼうさを抑えた処理ですが、例外"
"処理によるリダイレクトと組み合わせて使用すると良いでしょう"

#. Tag: para
#: Security.xml:429
#, no-c-format
msgid ""
"After the user logs in, we want to automatically send them back where they "
"came from, so they can retry the action that required logging in. If you add "
"the following event listeners to <literal>components.xml</literal>, attempts "
"to access a restricted view while not logged in will be remembered, so that "
"upon the user successfully logging in they will be redirected to the "
"originally requested view, with any page parameters that existed in the "
"original request."
msgstr ""
"ユーザーがログインした後で、再度ログインし直したい場合に自動的に最初のページ"
"（ユーザーが入ってきたページ）に戻したいような状況を考えてみましょう。 下の様"
"にイベントリスナーを<literal>components.xml</literal>に記述すると、ログインせ"
"ずに制限されたページの閲覧をした（閲覧に失敗した）ことを記憶させておいて、"
"ユーザーが再ログインして成功したときに、当初の要求時のページパラメータをもと"
"当該ページにリダイレクトさせることができます。"

#. Tag: programlisting
#: Security.xml:438
#, no-c-format
msgid ""
"<![CDATA[<event type=\"org.jboss.seam.security.notLoggedIn\">\n"
"    <action execute=\"#{redirect.captureCurrentView}\"/>\n"
"</event>\n"
"\n"
"<event type=\"org.jboss.seam.security.postAuthenticate\">\n"
"    <action execute=\"#{redirect.returnToCapturedView}\"/>\n"
"</event>]]>"
msgstr ""
"<![CDATA[<event type=\"org.jboss.seam.security.notLoggedIn\">\n"
"    <action execute=\"#{redirect.captureCurrentView}\"/>\n"
"</event>\n"
"\n"
"<event type=\"org.jboss.seam.security.postAuthenticate\">\n"
"    <action execute=\"#{redirect.returnToCapturedView}\"/>\n"
"</event>]]>"

#. Tag: para
#: Security.xml:440
#, no-c-format
msgid ""
"Note that login redirection is implemented as a conversation-scoped "
"mechanism, so don't end the conversation in your <literal>authenticate()</"
"literal> method."
msgstr ""
"ログインリダイレクトは対話スコープで実装されていますので、"
"<literal>authenticate()</literal>の中で対話を終了させてはいけません。"

#. Tag: title
#: Security.xml:448
#, no-c-format
msgid "HTTP Authentication"
msgstr "HTTP認証"

#. Tag: para
#: Security.xml:450
#, no-c-format
msgid ""
"Although not recommended for use unless absolutely necessary, Seam provides "
"means for authenticating using either HTTP Basic or HTTP Digest (RFC 2617) "
"methods. To use either form of authentication, the <literal>authentication-"
"filter</literal> component must be enabled in components.xml:"
msgstr ""
"推奨されませんが、どうしても必要であれば、Seamは（RFC2617）のHTTPBasicあるい"
"はHTTPDigestメソッドを認証に使用する事ができます。 これらの認証フォームを使用"
"する場合にはcomponents.xmlで <literal>authentication-filter</literal>が使用可"
"能に設定されている必要があります。"

#. Tag: programlisting
#: Security.xml:456
#, no-c-format
msgid ""
"<![CDATA[\n"
"  <web:authentication-filter url-pattern=\"*.seam\" auth-type=\"basic\"/>\n"
"      ]]>"
msgstr ""
"<![CDATA[\n"
"  <web:authentication-filter url-pattern=\"*.seam\" auth-type=\"basic\"/>\n"
"      ]]>"

#. Tag: para
#: Security.xml:458
#, no-c-format
msgid ""
"To enable the filter for basic authentication, set <literal>auth-type</"
"literal> to <literal>basic</literal>, or for digest authentication, set it "
"to <literal>digest</literal>. If using digest authentication, the "
"<literal>key</literal> and <literal>realm</literal> must also be set:"
msgstr ""
"ベーシックな認証フィルタを使用する場合、<literal>auth-type</literal>に"
"<literal>basic</literal>を設定し、ダイジェスト認証を使用する場合には、"
"<literal>digest</literal>を設定します。 ダイジェスト認証を使用する場合には "
"<literal>key</literal> と <literal>realm</literal>も設定する必要があります。"

#. Tag: programlisting
#: Security.xml:464
#, no-c-format
msgid ""
"<![CDATA[\n"
"  <web:authentication-filter url-pattern=\"*.seam\" auth-type=\"digest\" key="
"\"AA3JK34aSDlkj\" realm=\"My App\"/>\n"
"      ]]>"
msgstr ""
"<![CDATA[\n"
"  <web:authentication-filter url-pattern=\"*.seam\" auth-type=\"digest\" key="
"\"AA3JK34aSDlkj\" realm=\"My App\"/>\n"
"      ]]>"

#. Tag: para
#: Security.xml:466
#, no-c-format
msgid ""
"The <literal>key</literal> can be any String value. The <literal>realm</"
"literal> is the name of the authentication realm that is presented to the "
"user when they authenticate."
msgstr ""
"<literal>key</literal>は任意の文字列です。 <literal>realm</literal>はユーザー"
"が認証される時にユーザーに提供される認証レルムです。"

#. Tag: title
#: Security.xml:472
#, no-c-format
msgid "Writing a Digest Authenticator"
msgstr "ダイジェスト認証の記述"

#. Tag: para
#: Security.xml:474
#, no-c-format
msgid ""
"If using digest authentication, your authenticator class should extend the "
"abstract class <literal>org.jboss.seam.security.digest.DigestAuthenticator</"
"literal>, and use the <literal>validatePassword()</literal> method to "
"validate the user's plain text password against the digest request. Here is "
"an example:"
msgstr ""
"ダイジェスト認証を使用する場合は<literal>org.jboss.seam.security.digest."
"DigestAuthenticator</literal>アブストラクトクラスを拡張して、"
"<literal>validatePassword()</literal>メソッドによりユーザーのプレーンテキスト"
"のパスワードとダイジェスト要求を照合する必要があります。 以下はコード例です。"

#. Tag: programlisting
#: Security.xml:481
#, no-c-format
msgid ""
"<![CDATA[\n"
"   public boolean authenticate()\n"
"   {\n"
"      try\n"
"      {\n"
"         User user = (User) entityManager.createQuery(\n"
"            \"from User where username = :username\")\n"
"            .setParameter(\"username\", identity.getUsername())\n"
"            .getSingleResult();\n"
"\n"
"         return validatePassword(user.getPassword());\n"
"      }\n"
"      catch (NoResultException ex)\n"
"      {\n"
"         return false;\n"
"      }\n"
"   }\n"
"        ]]>"
msgstr ""
"<![CDATA[\n"
"   public boolean authenticate()\n"
"   {\n"
"      try\n"
"      {\n"
"         User user = (User) entityManager.createQuery(\n"
"            \"from User where username = :username\")\n"
"            .setParameter(\"username\", identity.getUsername())\n"
"            .getSingleResult();\n"
"\n"
"         return validatePassword(user.getPassword());\n"
"      }\n"
"      catch (NoResultException ex)\n"
"      {\n"
"         return false;\n"
"      }\n"
"   }\n"
"        ]]>"

#. Tag: title
#: Security.xml:487
#, no-c-format
msgid "Advanced Authentication Features"
msgstr "高度な認証機能"

#. Tag: para
#: Security.xml:489
#, no-c-format
msgid ""
"This section explores some of the advanced features provided by the security "
"API for addressing more complex security requirements."
msgstr ""
"ここでは、より高度なセキュリティ要求に応えられる、セキュリティAPIで提供されて"
"いるさらに高度な機能について紹介します。"

#. Tag: title
#: Security.xml:495
#, no-c-format
msgid "Using your container's JAAS configuration"
msgstr "使用しているコンテナのJAASの設定"

#. Tag: para
#: Security.xml:497
#, no-c-format
msgid ""
"If you would rather not use the simplified JAAS configuration provided by "
"the Seam Security API, you may instead delegate to the default system JAAS "
"configuration by providing a <literal>jaas-config-name</literal> property in "
"<literal>components.xml</literal>. For example, if you are using JBoss AS "
"and wish to use the <literal>other</literal> policy (which uses the "
"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
"then the entry in <literal>components.xml</literal> would look like this:"
msgstr ""
"もしSeamのセキュリティAPIが提供する簡素化されたJAAS設定を使用したくなければ、"
"<literal>components.xml</literal>に<literal>jaas-config-name</literal> プロパ"
"ティを設定する事によりシステムのデフォルトのJAAS設定にすることができます。 例"
"として、JBossASをアプリケーションサーバーとして使用していて <literal>other</"
"literal>ポリシー（JBossASの提供する <literal>UsersRolesLoginModule</literal>"
"ログインモジュールを使用する）を使用したい場合には、<literal>components.xml</"
"literal>に以下のような記述をします。"

#. Tag: programlisting
#: Security.xml:505
#, no-c-format
msgid "<![CDATA[<security:identity jaas-config-name=\"other\"/>]]>"
msgstr "<![CDATA[<security:identity jaas-config-name=\"other\"/>]]>"

#. Tag: para
#: Security.xml:507
#, no-c-format
msgid ""
"Please keep in mind that doing this does not mean that your user will be "
"authenticated in whichever container your Seam application is deployed in. "
"It merely instructs Seam Security to authenticate itself using the "
"configured JAAS security policy."
msgstr ""
"これは単にSeamのセキュリティに対して設定されたJAASセキュリティポリシーに基づ"
"いて認証を行うように指示をしているだけで、Seamアプリケーションが配置されてい"
"るどのコンテナに対してもユーザーの認証がなされたわけではない事に留意してくだ"
"さい。 "

#. Tag: title
#: Security.xml:517
#, no-c-format
msgid "Identity Management"
msgstr "IDの管理"

#. Tag: para
#: Security.xml:519
#, no-c-format
msgid ""
"Identity Management provides a standard API for the management of a Seam "
"application's users and roles, regardless of which identity store (database, "
"LDAP, etc) is used on the backend. At the center of the Identity Management "
"API is the <literal>identityManager</literal> component, which provides all "
"the methods for creating, modifying and deleting users, granting and "
"revoking roles, changing passwords, enabling and disabling user accounts, "
"authenticating users and listing users and roles."
msgstr ""
"ID管理は、バックエンドのIDストアの種類（データベース、LDAP等）に依存しない、"
"Seamのユーザーとロールの管理のための標準APIを提供します。 ID管理APIの中心は"
"<literal>identityManager</literal>コンポーネントで、新規ユーザーの作成、変"
"更、削除、ロールの追加、無効化、パスワードの変更、ユーザーアカウントの有効"
"化、無効化、ユーザーの認証、ユーザーとロールの一覧等の機能のためのメソッドを"
"提供します。"

#. Tag: para
#: Security.xml:527
#, no-c-format
msgid ""
"Before it may be used, the <literal>identityManager</literal> must first be "
"configured with one or more <literal>IdentityStore</literal>s. These "
"components do the actual work of interacting with the backend security "
"provider, whether it be a database, LDAP server, or something else."
msgstr ""
"使用する前に<literal>identityManager</literal>に一つ以上の"
"<literal>IdentityStore</literal>sを設定する必要があります。 これらのコンポー"
"ネントが実際にバックにあるデータベース、LDAP、その他のセキュリティプロバイダ"
"と協調して仕事をします。"

#. Tag: title
#: Security.xml:543
#, no-c-format
msgid "Configuring IdentityManager"
msgstr "IDマネージャの設定"

#. Tag: para
#: Security.xml:545
#, no-c-format
msgid ""
"The <literal>identityManager</literal> component allows for separate "
"identity stores to be configured for authentication and authorization "
"operations. This means that it is possible for users to be authenticated "
"against one identity store, for example an LDAP directory, yet have their "
"roles loaded from another identity store, such as a relational database."
msgstr ""
"<literal>identityManager</literal> コンポーネントに認証と許可について別々のID"
"ストアを設定する事が可能で、例えば、LDAPディレクトリを使用してユーザーの認証"
"をし、RDBからこのユーザーのロール情報を得て使用する事ができます。"

#. Tag: para
#: Security.xml:552
#, no-c-format
msgid ""
"Seam provides two <literal>IdentityStore</literal> implementations out of "
"the box; <literal>JpaIdentityStore</literal> uses a relational database to "
"store user and role information, and is the default identity store that is "
"used if nothing is explicitly configured in the <literal>identityManager</"
"literal> component. The other implementation that is provided is "
"<literal>LdapIdentityStore</literal>, which uses an LDAP directory to store "
"users and roles."
msgstr ""
"Seamは<literal>IdentityStore</literal>として二つの<literal>IdentityStore</"
"literal>の実装を提供しています。 ひとつはRDBを使用してユーザーとロールの情報"
"を保持する<literal>JpaIdentityStore</literal>で、デフォルトのIDストアとして設"
"定されており、<literal>identityManager</literal> コンポーネントの設定をするこ"
"となく使用する事ができます。 もう一つは<literal>LdapIdentityStore</literal>"
"で、LDAPディレクトリを使用してユーザーとロールを保持します。"

#. Tag: para
#: Security.xml:560
#, no-c-format
msgid ""
"There are two configurable properties for the <literal>identityManager</"
"literal> component - <literal>identityStore</literal> and "
"<literal>roleIdentityStore</literal>. The value for these properties must be "
"an EL expression referring to a Seam component implementing the "
"<literal>IdentityStore</literal> interface. As already mentioned, if left "
"unconfigured then <literal>JpaIdentityStore</literal> will be assumed by "
"default. If only the <literal>identityStore</literal> property is "
"configured, then the same value will be used for <literal>roleIdentityStore</"
"literal> also. For example, the following entry in <literal>components.xml</"
"literal> will configure <literal>identityManager</literal> to use an "
"<literal>LdapIdentityStore</literal> for both user-related and role-related "
"operations:"
msgstr ""
" <literal>identityManager</literal> コンポーネントには"
"<literal>identityStore</literal> と <literal>roleIdentityStore</literal>の二"
"つの設定可能なプロパティがあります。これらの値は、<literal>IdentityStore</"
"literal>インタフェースを実装したSeamコンポーネントを参照するEL式である必要が"
"あります。 既に言及したように、設定がされていない場合にはデフォルトの "
"<literal>JpaIdentityStore</literal>が使用され、また、<literal>identityStore</"
"literal>のみが設定された場合には<literal>roleIdentityStore</literal> に同じ値"
"が設定されたものとして処理されます。 例えば、<literal>components.xml</"
"literal>で<literal>LdapIdentityStore</literal>を<literal>identityManager</"
"literal>に使用するように設定した場合には、ユーザーに関するものと、ロールに関"
"するものの両方に<literal>identityManager</literal>が使用されます。"

#. Tag: programlisting
#: Security.xml:572
#, no-c-format
msgid ""
"<![CDATA[      \n"
"  <security:identity-manager identity-store=\"#{ldapIdentityStore}\"/>\n"
"      ]]>"
msgstr ""
"<![CDATA[      \n"
"  <security:identity-manager identity-store=\"#{ldapIdentityStore}\"/>\n"
"      ]]>"

#. Tag: para
#: Security.xml:574
#, no-c-format
msgid ""
"The following example configures <literal>identityManager</literal> to use "
"an <literal>LdapIdentityStore</literal> for user-related operations, and "
"<literal>JpaIdentityStore</literal> for role-related operations:"
msgstr ""
"下記の例ではユーザーに関しては<literal>LdapIdentityStore</literal>を、また"
"ロールに関する処理には<literal>JpaIdentityStore</literal>を使用するよう"
"<literal>identityManager</literal> を設定しています。"

#. Tag: programlisting
#: Security.xml:579
#, no-c-format
msgid ""
"<![CDATA[      \n"
"  <security:identity-manager \n"
"    identity-store=\"#{ldapIdentityStore}\" \n"
"    role-identity-store=\"#{jpaIdentityStore}\"/>\n"
"      ]]>"
msgstr ""
"<![CDATA[      \n"
"  <security:identity-manager \n"
"    identity-store=\"#{ldapIdentityStore}\" \n"
"    role-identity-store=\"#{jpaIdentityStore}\"/>\n"
"      ]]>"

#. Tag: para
#: Security.xml:581
#, no-c-format
msgid ""
"The following sections explain both of these identity store implementations "
"in greater detail."
msgstr ""
"以下の章ではこれらのIDストアのインプリメンテーションの詳細について説明します"

#. Tag: title
#: Security.xml:588
#, no-c-format
msgid "JpaIdentityStore"
msgstr "JpaIdentityStore"

#. Tag: para
#: Security.xml:590
#, no-c-format
msgid ""
"This identity store allows for users and roles to be stored inside a "
"relational database. It is designed to be as unrestrictive as possible in "
"regards to database schema design, allowing a great deal of flexibility in "
"the underlying table structure. This is achieved through the use of a set of "
"special annotations, allowing entity beans to be configured to store user "
"and role records."
msgstr ""
"このIDストアはユーザーおよびロールをリレーショナルデータベースに保存する事を"
"可能としています。 また、データベースのスキーマ設計にはできる限り制約を作らな"
"いように設計されており、使用するテーブルの構造に大幅な自由度を認めています。 "
"これはユーザーおよびロールのレコード用のエンティティBeanに特別のアノテーショ"
"ンを使用する事により実現しています。"

#. Tag: title
#: Security.xml:598
#, no-c-format
msgid "Configuring JpaIdentityStore"
msgstr "JpaIdentityStoreの設定"

#. Tag: para
#: Security.xml:600
#, no-c-format
msgid ""
"<literal>JpaIdentityStore</literal> requires that both the <literal>user-"
"class</literal> and <literal>role-class</literal> properties are configured. "
"These properties should refer to the entity classes that are to be used to "
"store both user and role records, respectively. The following example shows "
"the configuration from <literal>components.xml</literal> in the SeamSpace "
"example:"
msgstr ""
"<literal>JpaIdentityStore</literal> は <literal>user-class</literal> 属性と"
"<literal>role-class</literal>属性を設定する必要があります。 これらの属性は、"
"それぞれユーザーとロールのレコードを保存するエンティティクラスを参照している"
"必要があります。 下の例では、サンプルソースのSeamSpaceの<literal>components."
"xml</literal>の該当部分を示しています。 "

#. Tag: programlisting
#: Security.xml:607
#, no-c-format
msgid ""
"<![CDATA[\n"
"  <security:jpa-identity-store \n"
"    user-class=\"org.jboss.seam.example.seamspace.MemberAccount\"\n"
"    role-class=\"org.jboss.seam.example.seamspace.MemberRole\"/>\n"
"        ]]>"
msgstr ""
"<![CDATA[\n"
"  <security:jpa-identity-store \n"
"    user-class=\"org.jboss.seam.example.seamspace.MemberAccount\"\n"
"    role-class=\"org.jboss.seam.example.seamspace.MemberRole\"/>\n"
"        ]]>"

#. Tag: title
#: Security.xml:612
#, no-c-format
msgid "Configuring the Entities"
msgstr "エンティティの設定"

#. Tag: para
#: Security.xml:614
#, no-c-format
msgid ""
"As already mentioned, a set of special annotations are used to configure "
"entity beans for storing users and roles. The following table lists each of "
"the annotations, and their descriptions."
msgstr ""
"先に述べたように、特定のアノテーションを使用してユーザーとロールを保持するエ"
"ンティティBeanを設定します。 下の表に、これらのアノテーションとその詳細な説明"
"について示します。"

#. Tag: title
#: Security.xml:620
#, no-c-format
msgid "User Entity Annotations"
msgstr "ユーザーエンティティアノテーション"

#. Tag: para
#: Security.xml:630 Security.xml:764 Security.xml:3391 Security.xml:3554
#, no-c-format
msgid "Annotation"
msgstr "アノテーション"

#. Tag: para
#: Security.xml:633 Security.xml:767
#, no-c-format
msgid "Status"
msgstr "状態"

#. Tag: para
#: Security.xml:636 Security.xml:770 Security.xml:966 Security.xml:1418
#: Security.xml:2147 Security.xml:2756 Security.xml:3180 Security.xml:3397
#: Security.xml:3560 Security.xml:3801 Security.xml:4238
#, no-c-format
msgid "Description"
msgstr "詳細"

#. Tag: literal
#: Security.xml:645
#, no-c-format
msgid "@UserPrincipal"
msgstr "@UserPrincipal"

#. Tag: para
#: Security.xml:649 Security.xml:665 Security.xml:740 Security.xml:783
#, no-c-format
msgid "Required"
msgstr "要求条件"

#. Tag: para
#: Security.xml:652
#, no-c-format
msgid ""
"This annotation marks the field or method containing the user's username."
msgstr ""
"このアノテーションでユーザーのusernameを保持しているフィールドあるいはメソッ"
"ドをマークします。"

#. Tag: literal
#: Security.xml:661
#, no-c-format
msgid "@UserPassword"
msgstr "@UserPassword"

#. Tag: para
#: Security.xml:668
#, no-c-format
msgid ""
"This annotation marks the field or method containing the user's password. It "
"allows a <literal>hash</literal> algorithm to be specified for password "
"hashing. Possible values for <literal>hash</literal> are <literal>md5</"
"literal>, <literal>sha</literal> and <literal>none</literal>. E.g:"
msgstr ""
"このアノテーションは、アノテートされたフィールドあるいはメソッドにユーザーの"
"passwordがある事を示しています。 passwordのハッシュアルゴリズムを"
"<literal>hash</literal>で指定することが可能で、指定できる値には<literal>md5</"
"literal>, <literal>sha</literal> と <literal>none</literal>があります。"

#. Tag: programlisting
#: Security.xml:674
#, no-c-format
msgid ""
"<![CDATA[@UserPassword(hash = \"md5\")\n"
"public String getPasswordHash() { \n"
"  return passwordHash; \n"
"}]]>"
msgstr ""
"<![CDATA[@UserPassword(hash = \"md5\")\n"
"public String getPasswordHash() { \n"
"  return passwordHash; \n"
"}]]>"

#. Tag: para
#: Security.xml:676
#, no-c-format
msgid ""
"If an application requires a hash algorithm that isn't supported natively by "
"Seam, it is possible to extend the <literal>PasswordHash</literal> component "
"to implement other hashing algorithms."
msgstr ""
"Seamが標準でサポートしていないハッシュアルゴリズムを使用する場合には、"
"<literal>PasswordHash</literal>を拡張して必要なハッシュアルゴリズムを実装して"
"ください。"

#. Tag: literal
#: Security.xml:687
#, no-c-format
msgid "@UserFirstName"
msgstr "@UserFirstName"

#. Tag: para
#: Security.xml:691 Security.xml:707 Security.xml:723 Security.xml:799
#: Security.xml:815
#, no-c-format
msgid "Optional"
msgstr "オプション"

#. Tag: para
#: Security.xml:694
#, no-c-format
msgid ""
"This annotation marks the field or method containing the user's first name."
msgstr ""
"ユーザーのファーストネームを保持しているフィールドあるいはメソッドをマークし"
"ます。"

#. Tag: literal
#: Security.xml:703
#, no-c-format
msgid "@UserLastName"
msgstr "@UserLastName"

#. Tag: para
#: Security.xml:710
#, no-c-format
msgid ""
"This annotation marks the field or method containing the user's last name."
msgstr ""
"ユーザーのラストネームを保持しているフィールドあるいはメソッドをマークしま"
"す。"

#. Tag: literal
#: Security.xml:719
#, no-c-format
msgid "@UserEnabled"
msgstr "@UserEnabled"

#. Tag: para
#: Security.xml:726
#, no-c-format
msgid ""
"This annotation marks the field or method containing the enabled status of "
"the user. This should be a boolean property, and if not present then all "
"user accounts are assumed to be enabled."
msgstr ""
"このアノテーションは、アノテートされたフィールドあるいはメソッドがユーザーが"
"不活化されているか否かを示していることを示しています。 ここでアノテートされる"
"フィールドあるいはメソッドの属性はbooleanでなければなりません。 また、もしこ"
"のアノテーションが無ければ、すべてのユーザーが不活化されていないことになりま"
"す。"

#. Tag: literal
#: Security.xml:736
#, no-c-format
msgid "@UserRoles"
msgstr "@UserRoles"

#. Tag: para
#: Security.xml:743
#, no-c-format
msgid ""
"This annotation marks the field or method containing the roles of the user. "
"This property will be described in more detail further down."
msgstr ""
"このアノテーションは、アノテートされたフィールドあるいはメソッドにユーザーの"
"ロールがある事を示しています。 この属性については、以下により詳細に記述しま"
"す。"

#. Tag: title
#: Security.xml:754
#, no-c-format
msgid "Role Entity Annotations"
msgstr "エンティティのロールのアノテーション"

#. Tag: literal
#: Security.xml:779
#, no-c-format
msgid "@RoleName"
msgstr "@RoleName"

#. Tag: para
#: Security.xml:786
#, no-c-format
msgid ""
"This annotation marks the field or method containing the name of the role."
msgstr ""
"ユーザーのロール名を保持しているフィールドあるいはメソッドをマークします。"

#. Tag: literal
#: Security.xml:795
#, no-c-format
msgid "@RoleGroups"
msgstr "@RoleGroups"

#. Tag: para
#: Security.xml:802
#, no-c-format
msgid ""
"This annotation marks the field or method containing the group memberships "
"of the role."
msgstr ""
"ロールのグループメンバーを保持しているフィールドあるいはメソッドをマークしま"
"す。"

#. Tag: literal
#: Security.xml:811
#, no-c-format
msgid "@RoleConditional"
msgstr "@RoleConditional"

#. Tag: para
#: Security.xml:818
#, no-c-format
msgid ""
"This annotation marks the field or method indicating whether the role is "
"conditional or not. Conditional roles are explained later in this chapter."
msgstr "ロールが条件付きか否かを示すフィールドあるいはメソッドをマークします。"

#. Tag: title
#: Security.xml:832
#, no-c-format
msgid "Entity Bean Examples"
msgstr "エンティティ Beanの例"

#. Tag: para
#: Security.xml:834
#, no-c-format
msgid ""
"As mentioned previously, <literal>JpaIdentityStore</literal> is designed to "
"be as flexible as possible when it comes to the database schema design of "
"your user and role tables. This section looks at a number of possible "
"database schemas that can be used to store user and role records."
msgstr ""
"既に示したように<literal>JpaIdentityStore</literal>はデータベースのユーザーと"
"ロールに関するテーブルのスキーマのデザインができるだけ自由にできるように設計"
"されています。 ここでは、ユーザーとロールを保持するいくつかのデータベースのス"
"キーマについてみてゆきます。"

#. Tag: title
#: Security.xml:841
#, no-c-format
msgid "Minimal schema example"
msgstr "最小のスキーマの例"

#. Tag: para
#: Security.xml:843
#, no-c-format
msgid ""
"In this bare minimal example, a simple user and role table are linked via a "
"many-to-many relationship using a cross-reference table named "
"<literal>UserRoles</literal>."
msgstr ""
"この単純な例では、クロス参照テーブル<literal>UserRoles</literal>を通じてmany-"
"to-many関連でリンクされているuserとroleのテーブルで構成されています。"

#. Tag: programlisting
#: Security.xml:857
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"public class User {\n"
"  private Integer userId;\n"
"  private String username;\n"
"  private String passwordHash;\n"
"  private Set<Role> roles;\n"
"  \n"
"  @Id @GeneratedValue\n"
"  public Integer getUserId() { return userId; }\n"
"  public void setUserId(Integer userId) { this.userId = userId; }\n"
"  \n"
"  @UserPrincipal\n"
"  public String getUsername() { return username; }\n"
"  public void setUsername(String username) { this.username = username; }\n"
"  \n"
"  @UserPassword(hash = \"md5\")\n"
"  public String getPasswordHash() { return passwordHash; }\n"
"  public void setPasswordHash(String passwordHash) { this.passwordHash = "
"passwordHash; }\n"
"  \n"
"  @UserRoles\n"
"  @ManyToMany(targetEntity = Role.class)\n"
"  @JoinTable(name = \"UserRoles\", \n"
"    joinColumns = @JoinColumn(name = \"UserId\"),\n"
"    inverseJoinColumns = @JoinColumn(name = \"RoleId\"))\n"
"  public Set<Role> getRoles() { return roles; }\n"
"  public void setRoles(Set<Role> roles) { this.roles = roles; }\n"
"}]]>"
msgstr ""
"<![CDATA[@Entity\n"
"public class User {\n"
"  private Integer userId;\n"
"  private String username;\n"
"  private String passwordHash;\n"
"  private Set<Role> roles;\n"
"  \n"
"  @Id @GeneratedValue\n"
"  public Integer getUserId() { return userId; }\n"
"  public void setUserId(Integer userId) { this.userId = userId; }\n"
"  \n"
"  @UserPrincipal\n"
"  public String getUsername() { return username; }\n"
"  public void setUsername(String username) { this.username = username; }\n"
"  \n"
"  @UserPassword(hash = \"md5\")\n"
"  public String getPasswordHash() { return passwordHash; }\n"
"  public void setPasswordHash(String passwordHash) { this.passwordHash = "
"passwordHash; }\n"
"  \n"
"  @UserRoles\n"
"  @ManyToMany(targetEntity = Role.class)\n"
"  @JoinTable(name = \"UserRoles\", \n"
"    joinColumns = @JoinColumn(name = \"UserId\"),\n"
"    inverseJoinColumns = @JoinColumn(name = \"RoleId\"))\n"
"  public Set<Role> getRoles() { return roles; }\n"
"  public void setRoles(Set<Role> roles) { this.roles = roles; }\n"
"}]]>"

#. Tag: programlisting
#: Security.xml:858
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"public class Role {\n"
"  private Integer roleId;\n"
"  private String rolename;\n"
"  \n"
"  @Id @Generated\n"
"  public Integer getRoleId() { return roleId; }\n"
"  public void setRoleId(Integer roleId) { this.roleId = roleId; }\n"
"  \n"
"  @RoleName\n"
"  public String getRolename() { return rolename; }\n"
"  public void setRolename(String rolename) { this.rolename = rolename; }\n"
"}]]>"
msgstr ""
"<![CDATA[@Entity\n"
"public class Role {\n"
"  private Integer roleId;\n"
"  private String rolename;\n"
"  \n"
"  @Id @Generated\n"
"  public Integer getRoleId() { return roleId; }\n"
"  public void setRoleId(Integer roleId) { this.roleId = roleId; }\n"
"  \n"
"  @RoleName\n"
"  public String getRolename() { return rolename; }\n"
"  public void setRolename(String rolename) { this.rolename = rolename; }\n"
"}]]>"

#. Tag: title
#: Security.xml:863
#, no-c-format
msgid "Complex Schema Example"
msgstr "複雑なスキーマの例"

#. Tag: para
#: Security.xml:865
#, no-c-format
msgid ""
"This example builds on the above minimal example by including all of the "
"optional fields, and allowing group memberships for roles."
msgstr ""
"この例では、前の最少機能の例にすべてのオプションフィールドと、ロールにグルー"
"プメンバーを許可する機能を追加しています。"

#. Tag: programlisting
#: Security.xml:879
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"public class User {\n"
"  private Integer userId;\n"
"  private String username;\n"
"  private String passwordHash;\n"
"  private Set<Role> roles;\n"
"  private String firstname;\n"
"  private String lastname;\n"
"  private boolean enabled;\n"
"  \n"
"  @Id @GeneratedValue\n"
"  public Integer getUserId() { return userId; }\n"
"  public void setUserId(Integer userId) { this.userId = userId; }\n"
"  \n"
"  @UserPrincipal\n"
"  public String getUsername() { return username; }\n"
"  public void setUsername(String username) { this.username = username; }\n"
"  \n"
"  @UserPassword(hash = \"md5\")\n"
"  public String getPasswordHash() { return passwordHash; }\n"
"  public void setPasswordHash(String passwordHash) { this.passwordHash = "
"passwordHash; }\n"
"  \n"
"  @UserFirstName\n"
"  public String getFirstname() { return firstname; }\n"
"  public void setFirstname(String firstname) { this.firstname = "
"firstname; }\n"
"  \n"
"  @UserLastName\n"
"  public String getLastname() { return lastname; }\n"
"  public void setLastname(String lastname) { this.lastname = lastname; }\n"
"  \n"
"  @UserEnabled\n"
"  public boolean isEnabled() { return enabled; }\n"
"  public void setEnabled(boolean enabled) { this.enabled = enabled; }\n"
"  \n"
"  @UserRoles\n"
"  @ManyToMany(targetEntity = Role.class)\n"
"  @JoinTable(name = \"UserRoles\", \n"
"    joinColumns = @JoinColumn(name = \"UserId\"),\n"
"    inverseJoinColumns = @JoinColumn(name = \"RoleId\"))\n"
"  public Set<Role> getRoles() { return roles; }\n"
"  public void setRoles(Set<Role> roles) { this.roles = roles; }\n"
"}]]>"
msgstr ""
"<![CDATA[@Entity\n"
"public class User {\n"
"  private Integer userId;\n"
"  private String username;\n"
"  private String passwordHash;\n"
"  private Set<Role> roles;\n"
"  private String firstname;\n"
"  private String lastname;\n"
"  private boolean enabled;\n"
"  \n"
"  @Id @GeneratedValue\n"
"  public Integer getUserId() { return userId; }\n"
"  public void setUserId(Integer userId) { this.userId = userId; }\n"
"  \n"
"  @UserPrincipal\n"
"  public String getUsername() { return username; }\n"
"  public void setUsername(String username) { this.username = username; }\n"
"  \n"
"  @UserPassword(hash = \"md5\")\n"
"  public String getPasswordHash() { return passwordHash; }\n"
"  public void setPasswordHash(String passwordHash) { this.passwordHash = "
"passwordHash; }\n"
"  \n"
"  @UserFirstName\n"
"  public String getFirstname() { return firstname; }\n"
"  public void setFirstname(String firstname) { this.firstname = "
"firstname; }\n"
"  \n"
"  @UserLastName\n"
"  public String getLastname() { return lastname; }\n"
"  public void setLastname(String lastname) { this.lastname = lastname; }\n"
"  \n"
"  @UserEnabled\n"
"  public boolean isEnabled() { return enabled; }\n"
"  public void setEnabled(boolean enabled) { this.enabled = enabled; }\n"
"  \n"
"  @UserRoles\n"
"  @ManyToMany(targetEntity = Role.class)\n"
"  @JoinTable(name = \"UserRoles\", \n"
"    joinColumns = @JoinColumn(name = \"UserId\"),\n"
"    inverseJoinColumns = @JoinColumn(name = \"RoleId\"))\n"
"  public Set<Role> getRoles() { return roles; }\n"
"  public void setRoles(Set<Role> roles) { this.roles = roles; }\n"
"}]]>"

#. Tag: programlisting
#: Security.xml:880
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"public class Role {\n"
"  private Integer roleId;\n"
"  private String rolename;\n"
"  private boolean conditional;\n"
"  \n"
"  @Id @Generated\n"
"  public Integer getRoleId() { return roleId; }\n"
"  public void setRoleId(Integer roleId) { this.roleId = roleId; }\n"
"  \n"
"  @RoleName\n"
"  public String getRolename() { return rolename; }\n"
"  public void setRolename(String rolename) { this.rolename = rolename; }\n"
"  \n"
"  @RoleConditional\n"
"  public boolean isConditional() { return conditional; }\n"
"  public void setConditional(boolean conditional) { this.conditional = "
"conditional; }\n"
"  \n"
"  @RoleGroups\n"
"  @ManyToMany(targetEntity = Role.class)\n"
"  @JoinTable(name = \"RoleGroups\", \n"
"    joinColumns = @JoinColumn(name = \"RoleId\"),\n"
"    inverseJoinColumns = @JoinColumn(name = \"GroupId\"))\n"
"  public Set<Role> getGroups() { return groups; }\n"
"  public void setGroups(Set<Role> groups) { this.groups = groups; }  \n"
"  \n"
"}]]>"
msgstr ""
"<![CDATA[@Entity\n"
"public class Role {\n"
"  private Integer roleId;\n"
"  private String rolename;\n"
"  private boolean conditional;\n"
"  \n"
"  @Id @Generated\n"
"  public Integer getRoleId() { return roleId; }\n"
"  public void setRoleId(Integer roleId) { this.roleId = roleId; }\n"
"  \n"
"  @RoleName\n"
"  public String getRolename() { return rolename; }\n"
"  public void setRolename(String rolename) { this.rolename = rolename; }\n"
"  \n"
"  @RoleConditional\n"
"  public boolean isConditional() { return conditional; }\n"
"  public void setConditional(boolean conditional) { this.conditional = "
"conditional; }\n"
"  \n"
"  @RoleGroups\n"
"  @ManyToMany(targetEntity = Role.class)\n"
"  @JoinTable(name = \"RoleGroups\", \n"
"    joinColumns = @JoinColumn(name = \"RoleId\"),\n"
"    inverseJoinColumns = @JoinColumn(name = \"GroupId\"))\n"
"  public Set<Role> getGroups() { return groups; }\n"
"  public void setGroups(Set<Role> groups) { this.groups = groups; }  \n"
"  \n"
"}]]>"

#. Tag: title
#: Security.xml:886
#, no-c-format
msgid "JpaIdentityStore Events"
msgstr "JpaIdentityStore関連のイベント"

#. Tag: para
#: Security.xml:888
#, no-c-format
msgid ""
"When using <literal>JpaIdentityStore</literal> as the identity store "
"implementation with <literal>IdentityManager</literal>, a few events are "
"raised as a result of invoking certain <literal>IdentityManager</literal> "
"methods."
msgstr ""
"<literal>IdentityManager</literal>のIDストアの実装として"
"<literal>JpaIdentityStore</literal>を使用する場合、特定の "
"<literal>IdentityManager</literal>メソッドを起動するとイベントが発生します。 "

#. Tag: title
#: Security.xml:894
#, no-c-format
msgid "JpaIdentityStore.EVENT_PRE_PERSIST_USER"
msgstr "JpaIdentityStore.EVENT_PRE_PERSIST_USER"

#. Tag: para
#: Security.xml:896
#, no-c-format
msgid ""
"This event is raised in response to calling <literal>IdentityManager."
"createUser()</literal>. Just before the user entity is persisted to the "
"database, this event will be raised passing the entity instance as an event "
"parameter. The entity will be an instance of the <literal>user-class</"
"literal> configured for <literal>JpaIdentityStore</literal>."
msgstr ""
"このイベントは<literal>IdentityManager.createUser()</literal>を呼ぶと発生しま"
"す。 ユーザーエンティティがデータベースに保持される直前にエンティティインスタ"
"ンスをイベントパラメータとしたイベントが発生します。 このエンティティは"
"<literal>JpaIdentityStore</literal>に設定した <literal>user-class</literal>の"
"インスタンスです。"

#. Tag: para
#: Security.xml:902
#, no-c-format
msgid ""
"Writing an observer for this event may be useful for setting additional "
"field values on the entity, which aren't set as part of the standard "
"<literal>createUser()</literal> functionality."
msgstr ""
"エンティティに標準の<literal>createUser()</literal>で設定されない追加的な"
"フィールド値を設定するためにこのイベントに対応するオブザーバを利用する事がで"
"きます。"

#. Tag: title
#: Security.xml:909
#, no-c-format
msgid "JpaIdentityStore.EVENT_USER_CREATED"
msgstr "JpaIdentityStore.EVENT_USER_CREATED"

#. Tag: para
#: Security.xml:911
#, no-c-format
msgid ""
"This event is also raised in response to calling <literal>IdentityManager."
"createUser()</literal>. However, it is raised after the user entity has "
"already been persisted to the database. Like the "
"<literal>EVENT_PRE_PERSIST_USER</literal> event, it also passes the entity "
"instance as an event parameter. It may be useful to observe this event if "
"you also need to persist other entities that reference the user entity, for "
"example contact detail records or other user-specific data."
msgstr ""
"このイベントは<literal>IdentityManager.createUser()</literal>を呼ぶことによっ"
"ても発生します。 しかし、このイベントはユーザーエンティティの内容がデータベー"
"スに保持された後に発生します。 このイベントも"
"<literal>EVENT_PRE_PERSIST_USER</literal>と同様、イベントパラメータとしてエン"
"ティティのインスタンスを渡します。 ユーザーエンティティを参照する、コンタクト"
"の詳細や当該ユーザー特有のデータのエンティティをデータベースに保存する必要が"
"ある場合には、このイベントを観察しておくのが有効です。"

#. Tag: title
#: Security.xml:921
#, no-c-format
msgid "JpaIdentityStore.EVENT_USER_AUTHENTICATED"
msgstr "JpaIdentityStore.EVENT_USER_AUTHENTICATED"

#. Tag: para
#: Security.xml:923
#, no-c-format
msgid ""
"This event is raised when calling <literal>IdentityManager.authenticate()</"
"literal>. It passes the user entity instance as the event parameter, and is "
"useful for reading additional properties from the user entity that is being "
"authenticated."
msgstr ""
"このイベントは<literal>IdentityManager.authenticate()</literal>を呼んだ時に発"
"生します。 このイベントはエンティティインスタンスをイベントパラメータとして渡"
"しますので、認証されたユーザーのその他の属性を読みだす時に有効に使用できま"
"す。"

#. Tag: title
#: Security.xml:933
#, no-c-format
msgid "LdapIdentityStore"
msgstr "LdapIdentityStore"

#. Tag: para
#: Security.xml:935
#, no-c-format
msgid ""
"This identity store implementation is designed for working with user records "
"stored in an LDAP directory. It is very highly configurable, allowing great "
"flexibility in how both users and roles are stored in the directory. The "
"following sections describe the configuration options for this identity "
"store, and provide some configuration examples."
msgstr ""
"このIDストアの実装はLDAPディレクトリをユーザーレコードとして使用するよう設計"
"されています。 この実装は、ユーザーとロールのディレクトリへの保存の方法の設定"
"の自由度が高くなっています。 以下のセクションでは、このIIDストアの設定オプ"
"ションについて説明し、いくつかのサンプル設定を示します。"

#. Tag: title
#: Security.xml:942
#, no-c-format
msgid "Configuring LdapIdentityStore"
msgstr "LdapIdentiyStoreの設定"

#. Tag: para
#: Security.xml:944
#, no-c-format
msgid ""
"The following table describes the available properties that can be "
"configured in <literal>components.xml</literal> for "
"<literal>LdapIdentityStore</literal>."
msgstr ""
"以下の表に<literal>components.xml</literal> で設定できる"
"<literal>LdapIdentityStore</literal>の属性について示します。"

#. Tag: title
#: Security.xml:950
#, no-c-format
msgid "LdapIdentityStore Configuration Properties"
msgstr "LdapIdentityStore設定可能属性"

#. Tag: para
#: Security.xml:960
#, no-c-format
msgid "Property"
msgstr "プロパティ"

#. Tag: para
#: Security.xml:963
#, no-c-format
msgid "Default Value"
msgstr "デフォルト値"

#. Tag: literal
#: Security.xml:975
#, no-c-format
msgid "server-address"
msgstr "server-address"

#. Tag: literal
#: Security.xml:979
#, no-c-format
msgid "localhost"
msgstr "localhost"

#. Tag: para
#: Security.xml:982
#, no-c-format
msgid "The address of the LDAP server."
msgstr "LDAPサーバのアドレス"

#. Tag: literal
#: Security.xml:991
#, no-c-format
msgid "server-port"
msgstr "server-port"

#. Tag: literal
#: Security.xml:995
#, no-c-format
msgid "<literal>389</literal>"
msgstr "<literal>389</literal>"

#. Tag: para
#: Security.xml:998
#, no-c-format
msgid "The port number that the LDAP server is listening on."
msgstr "LDAPサーバが使用しているポートの番号"

#. Tag: literal
#: Security.xml:1007
#, no-c-format
msgid "user-context-DN"
msgstr "user-context-DN"

#. Tag: literal
#: Security.xml:1011
#, no-c-format
msgid "ou=Person,dc=acme,dc=com"
msgstr "ou=Person,dc=acme,dc=com"

#. Tag: para
#: Security.xml:1014
#, no-c-format
msgid "The Distinguished Name (DN) of the context containing user records."
msgstr "ユーザーレコードを含むコンテキストの識別名（DN)"

#. Tag: literal
#: Security.xml:1023
#, no-c-format
msgid "user-DN-prefix"
msgstr "user-DN-prefix"

#. Tag: literal
#: Security.xml:1027
#, no-c-format
msgid "uid="
msgstr "uid="

#. Tag: para
#: Security.xml:1030
#, no-c-format
msgid ""
"This value is prefixed to the front of the username to locate the user's "
"record."
msgstr ""
"この値がユーザーレコードの位置指定するためにusernameの前に前置されます。"

#. Tag: literal
#: Security.xml:1039
#, no-c-format
msgid "user-DN-suffix"
msgstr "user-DN-suffix"

#. Tag: literal
#: Security.xml:1043
#, no-c-format
msgid ",ou=Person,dc=acme,dc=com"
msgstr ",ou=Person,dc=acme,dc=com"

#. Tag: para
#: Security.xml:1046
#, no-c-format
msgid ""
"This value is appended to the end of the username to locate the user's "
"record."
msgstr ""
"この値がユーザーレコードの位置指定するためにusernameの後ろに追加されます。"

#. Tag: literal
#: Security.xml:1055
#, no-c-format
msgid "role-context-DN"
msgstr "role-context-DN"

#. Tag: literal
#: Security.xml:1059
#, no-c-format
msgid "ou=Role,dc=acme,dc=com"
msgstr "ou=Role,dc=acme,dc=com"

#. Tag: para
#: Security.xml:1062
#, no-c-format
msgid "The DN of the context containing role records."
msgstr "ロールレコードを含むコンテキストの識別子（DN)"

#. Tag: literal
#: Security.xml:1071
#, no-c-format
msgid "role-DN-prefix"
msgstr "role-DN-prefix"

#. Tag: literal
#: Security.xml:1075
#, no-c-format
msgid "<literal>cn=</literal>"
msgstr "<literal>cn=</literal>"

#. Tag: para
#: Security.xml:1078
#, no-c-format
msgid ""
"This value is prefixed to the front of the role name to form the DN for "
"locating the role record."
msgstr ""
"この値がロール名の前に前置され、ロールレコードを位置指定するための識別子とし"
"て使用されます。"

#. Tag: literal
#: Security.xml:1088
#, no-c-format
msgid "role-DN-suffix"
msgstr "role-DN-suffix"

#. Tag: literal
#: Security.xml:1092
#, no-c-format
msgid ",ou=Roles,dc=acme,dc=com"
msgstr ",ou=Roles,dc=acme,dc=com"

#. Tag: para
#: Security.xml:1095
#, no-c-format
msgid ""
"This value is appended to the role name to form the DN for locating the role "
"record."
msgstr ""
"この値がロール名の後ろに追加され、ロールレコードを位置指定するための識別子と"
"して使用されます。"

#. Tag: literal
#: Security.xml:1104
#, no-c-format
msgid "bind-DN"
msgstr "bind-DN"

#. Tag: literal
#: Security.xml:1108
#, no-c-format
msgid "cn=Manager,dc=acme,dc=com"
msgstr "cn=Manager,dc=acme,dc=com"

#. Tag: para
#: Security.xml:1111
#, no-c-format
msgid "This is the context used to bind to the LDAP server."
msgstr "LDAPサーバとバインドするために使用するコンテキスト"

#. Tag: literal
#: Security.xml:1120
#, no-c-format
msgid "bind-credentials"
msgstr "bind-credentials"

#. Tag: literal
#: Security.xml:1124
#, no-c-format
msgid "secret"
msgstr "secret"

#. Tag: para
#: Security.xml:1127
#, no-c-format
msgid ""
"These are the credentials (the password) used to bind to the LDAP server."
msgstr "LDAPサーバとバインドするときに使用されるクレデンシャル（パスワード）"

#. Tag: literal
#: Security.xml:1136
#, no-c-format
msgid "user-role-attribute"
msgstr "user-role-attribute"

#. Tag: literal
#: Security.xml:1140
#, no-c-format
msgid "roles"
msgstr "roles"

#. Tag: para
#: Security.xml:1143
#, no-c-format
msgid ""
"This is the name of the attribute of the user record that contains the list "
"of roles that the user is a member of."
msgstr ""
"ユーザーがメンバーであるロールのリストを含んでいるユーザーレコード中の属性の"
"名前"

#. Tag: literal
#: Security.xml:1153
#, no-c-format
msgid "role-attribute-is-DN"
msgstr "role-attribute-is-DN"

#. Tag: literal
#: Security.xml:1157
#, no-c-format
msgid "true"
msgstr "true"

#. Tag: para
#: Security.xml:1160
#, no-c-format
msgid ""
"This boolean property indicates whether the role attribute of the user "
"record is itself a distinguished name."
msgstr ""
"このブール値はユーザーレコード中のロール属性が識別名か否かを示しています。"

#. Tag: literal
#: Security.xml:1170
#, no-c-format
msgid "user-name-attribute"
msgstr "user-name-attribute"

#. Tag: literal
#: Security.xml:1174
#, no-c-format
msgid "<literal>uid</literal>"
msgstr "<literal>uid</literal>"

#. Tag: para
#: Security.xml:1177
#, no-c-format
msgid "Indicates which attribute of the user record contains the username."
msgstr "ユーザーレコードのどの属性がusernameに該当するのかを示しています。"

#. Tag: literal
#: Security.xml:1186
#, no-c-format
msgid "user-password-attribute"
msgstr "user-password-attribute"

#. Tag: literal
#: Security.xml:1190
#, no-c-format
msgid "userPassword"
msgstr "userPassword"

#. Tag: para
#: Security.xml:1193
#, no-c-format
msgid ""
"Indicates which attribute of the user record contains the user's password."
msgstr "ユーザーレコードのどの属性がpasswordに該当するのかを示しています。"

#. Tag: literal
#: Security.xml:1202
#, no-c-format
msgid "first-name-attribute"
msgstr "first-name-attribute"

#. Tag: literal
#: Security.xml:1206 Security.xml:1254
#, no-c-format
msgid "null"
msgstr "null"

#. Tag: para
#: Security.xml:1209
#, no-c-format
msgid ""
"Indicates which attribute of the user record contains the user's first name."
msgstr "ユーザーレコードのどの属性がfirst nameに該当するのかを示しています。"

#. Tag: literal
#: Security.xml:1218
#, no-c-format
msgid "last-name-attribute"
msgstr "last-name-attribute"

#. Tag: literal
#: Security.xml:1222
#, no-c-format
msgid "<literal>sn</literal>"
msgstr "<literal>sn</literal>"

#. Tag: para
#: Security.xml:1225
#, no-c-format
msgid ""
"Indicates which attribute of the user record contains the user's last name."
msgstr "ユーザーレコードのどの属性がlast nameに該当するのかを示しています。"

#. Tag: literal
#: Security.xml:1234
#, no-c-format
msgid "full-name-attribute"
msgstr "full-name-attribute"

#. Tag: literal
#: Security.xml:1238 Security.xml:1270
#, no-c-format
msgid "<literal>cn</literal>"
msgstr "<literal>cn</literal>"

#. Tag: para
#: Security.xml:1241
#, no-c-format
msgid ""
"Indicates which attribute of the user record contains the user's full "
"(common) name."
msgstr ""
"ユーザーレコードのどの属性がユーザーのフルネームに該当するのかを示していま"
"す。"

#. Tag: literal
#: Security.xml:1250
#, no-c-format
msgid "enabled-attribute"
msgstr "enabled-attribute"

#. Tag: para
#: Security.xml:1257
#, no-c-format
msgid ""
"Indicates which attribute of the user record determines whether the user is "
"enabled."
msgstr ""
"ユーザーレコードのどの属性がユーザーが不活化されていないかを示しています。"

#. Tag: literal
#: Security.xml:1266
#, no-c-format
msgid "role-name-attribute"
msgstr "role-name-attribute"

#. Tag: para
#: Security.xml:1273
#, no-c-format
msgid ""
"Indicates which attribute of the role record contains the name of the role."
msgstr "ロールレコードのどの属性がロール名に該当するのかを示しています。"

#. Tag: literal
#: Security.xml:1282
#, no-c-format
msgid "object-class-attribute"
msgstr "object-class-attribute"

#. Tag: literal
#: Security.xml:1286
#, no-c-format
msgid "objectClass"
msgstr "objectClass"

#. Tag: para
#: Security.xml:1289
#, no-c-format
msgid ""
"Indicates which attribute determines the class of an object in the directory."
msgstr "ディレクトリ中でオブジェクトのクラスを決定している属性を示しています。"

#. Tag: literal
#: Security.xml:1298
#, no-c-format
msgid "role-object-classes"
msgstr "role-object-classes"

#. Tag: literal
#: Security.xml:1302
#, no-c-format
msgid "organizationalRole"
msgstr "organizationalRole"

#. Tag: para
#: Security.xml:1305
#, no-c-format
msgid ""
"An array of the object classes that new role records should be created as."
msgstr "新規のロールレコードの作成のためのオブジェクトクラスの配列"

#. Tag: literal
#: Security.xml:1314
#, no-c-format
msgid "user-object-classes"
msgstr "user-object-classes"

#. Tag: literal
#: Security.xml:1318
#, no-c-format
msgid "person,uidObject"
msgstr "person,uidObject"

#. Tag: para
#: Security.xml:1321
#, no-c-format
msgid ""
"An array of the object classes that new user records should be created as."
msgstr "新規のユーザーレコード作成のためのオブジェクトクラスの配列"

#. Tag: title
#: Security.xml:1333
#, no-c-format
msgid "LdapIdentityStore Configuration Example"
msgstr "LdapIdentityStore設定例"

#. Tag: para
#: Security.xml:1335
#, no-c-format
msgid ""
"The following configuration example shows how <literal>LdapIdentityStore</"
"literal> may be configured for an LDAP directory running on fictional host "
"<literal>directory.mycompany.com</literal>. The users are stored within this "
"directory under the context <literal>ou=Person,dc=mycompany,dc=com</"
"literal>, and are identified using the <literal>uid</literal> attribute "
"(which corresponds to their username). Roles are stored in their own "
"context, <literal>ou=Roles,dc=mycompany,dc=com</literal> and referenced from "
"the user's entry via the <literal>roles</literal> attribute. Role entries "
"are identified by their common name (the <literal>cn</literal> attribute) , "
"which corresponds to the role name. In this example, users may be disabled "
"by setting the value of their <literal>enabled</literal> attribute to false."
msgstr ""
"下の設定例では、擬似ホスト <literal>directory.mycompany.com</literal>上で動作"
"しているLDAPディレクトリに対応する<literal>LdapIdentityStore</literal> の設定"
"を示しています。 ユーザーは、このディレクトリ配下に<literal>ou=Person,"
"dc=mycompany,dc=com</literal>というコンテキストで保持され、usernameに対応する"
"<literal>uid</literal>属性により識別されます。 ロールはロール用のコンテキスト"
"<literal>ou=Roles,dc=mycompany,dc=com</literal>に保持され、ユーザーのエントリ"
"から<literal>roles</literal>属性を通じて参照されます。 ロールのエントリはロー"
"ルの名前に対応するロールの一般名（<literal>cn</literal> 属性）により識別され"
"ます。 この例では、ユーザーは<literal>enabled</literal>属性をfalseにする事に"
"より、使用不可にする事ができます。"

#. Tag: programlisting
#: Security.xml:1346
#, no-c-format
msgid ""
"<![CDATA[\n"
"  <security:ldap-identity-store\n"
"    server-address=\"directory.mycompany.com\"\n"
"    bind-DN=\"cn=Manager,dc=mycompany,dc=com\"\n"
"    bind-credentials=\"secret\"\n"
"    user-DN-prefix=\"uid=\"\n"
"    user-DN-suffix=\",ou=Person,dc=mycompany,dc=com\"\n"
"    role-DN-prefix=\"cn=\"\n"
"    role-DN-suffix=\",ou=Roles,dc=mycompany,dc=com\"\n"
"    user-context-DN=\"ou=Person,dc=mycompany,dc=com\"\n"
"    role-context-DN=\"ou=Roles,dc=mycompany,dc=com\"\n"
"    user-role-attribute=\"roles\"\n"
"    role-name-attribute=\"cn\"\n"
"    user-object-classes=\"person,uidObject\"\n"
"    enabled-attribute=\"enabled\"\n"
"    />]]>"
msgstr ""
"<![CDATA[\n"
"  <security:ldap-identity-store\n"
"    server-address=\"directory.mycompany.com\"\n"
"    bind-DN=\"cn=Manager,dc=mycompany,dc=com\"\n"
"    bind-credentials=\"secret\"\n"
"    user-DN-prefix=\"uid=\"\n"
"    user-DN-suffix=\",ou=Person,dc=mycompany,dc=com\"\n"
"    role-DN-prefix=\"cn=\"\n"
"    role-DN-suffix=\",ou=Roles,dc=mycompany,dc=com\"\n"
"    user-context-DN=\"ou=Person,dc=mycompany,dc=com\"\n"
"    role-context-DN=\"ou=Roles,dc=mycompany,dc=com\"\n"
"    user-role-attribute=\"roles\"\n"
"    role-name-attribute=\"cn\"\n"
"    user-object-classes=\"person,uidObject\"\n"
"    enabled-attribute=\"enabled\"\n"
"    />]]>"

#. Tag: title
#: Security.xml:1353
#, no-c-format
msgid "Writing your own IdentityStore"
msgstr "自分のIDストアを記述する"

#. Tag: para
#: Security.xml:1355
#, no-c-format
msgid ""
"Writing your own identity store implementation allows you to authenticate "
"and perform identity management operations against security providers that "
"aren't supported out of the box by Seam. Only a single class is required to "
"achieve this, and it must implement the <literal>org.jboss.seam.security."
"management.IdentityStore</literal> interface."
msgstr ""
"Seamによって標準でサポートされていないセキュリティプロバイダを使った認証やID"
"管理を行う場合には、<literal>org.jboss.seam.security.management."
"IdentityStore</literal>を実装する、一つのクラスの実装を記述するだけ実現できま"
"す。"

#. Tag: para
#: Security.xml:1362
#, no-c-format
msgid ""
"Please refer to the JavaDoc for <literal>IdentityStore</literal> for a "
"description of the methods that must be implemented."
msgstr ""
"<literal>IdentityStore</literal>の実装するメソッドの詳細については該当する"
"JavaDocを参照してください。"

#. Tag: title
#: Security.xml:1370
#, no-c-format
msgid "Authentication with Identity Management"
msgstr "ID管理による認証"

#. Tag: para
#: Security.xml:1372
#, no-c-format
msgid ""
"If you are using the Identity Management features in your Seam application, "
"then it is not required to provide an authenticator component (see previous "
"Authentication section) to enable authentication. Simply omit the "
"<literal>authenticator-method</literal> from the <literal>identity</literal> "
"configuration in <literal>components.xml</literal>, and the "
"<literal>SeamLoginModule</literal> will by default use "
"<literal>IdentityManager</literal> to authenticate your application's users, "
"without any special configuration required."
msgstr ""
"SeamアプリケーションでID管理機能を使っている場合には、認証コンポーネント（認"
"証の項参照）による認証を行う必要はありません。<literal>components.xml</"
"literal>の<literal>identity</literal>設定から<literal>authenticator-method</"
"literal>を削除してください。 これで、特別な設定をすることなく"
"<literal>SeamLoginModule</literal> はデフォルトの<literal>IdentityManager</"
"literal>を使用してユーザーの認証を行うようになります。"

#. Tag: title
#: Security.xml:1383
#, no-c-format
msgid "Using IdentityManager"
msgstr "IDマネージャの使用"

#. Tag: para
#: Security.xml:1385
#, no-c-format
msgid ""
"The <literal>IdentityManager</literal> can be accessed either by injecting "
"it into your Seam component as follows:"
msgstr ""
"<literal>IdentityManager</literal>にアクセスできるようにするには、下のように"
"Seamコンポーネントにインジェクトします。"

#. Tag: programlisting
#: Security.xml:1390
#, no-c-format
msgid "<![CDATA[  @In IdentityManager identityManager;]]>"
msgstr "<![CDATA[  @In IdentityManager identityManager;]]>"

#. Tag: para
#: Security.xml:1392
#, no-c-format
msgid ""
"or by accessing it through its static <literal>instance()</literal> method:"
msgstr ""
"あるいは、静的な<literal>instance()</literal>メソッド経由でアクセスします。 "

#. Tag: programlisting
#: Security.xml:1396
#, no-c-format
msgid ""
"<![CDATA[  IdentityManager identityManager = IdentityManager.instance();]]>"
msgstr ""
"<![CDATA[  IdentityManager identityManager = IdentityManager.instance();]]>"

#. Tag: para
#: Security.xml:1398
#, no-c-format
msgid ""
"The following table describes <literal>IdentityManager</literal>'s API "
"methods:"
msgstr ""
"下のテーブルに<literal>IdentityManager</literal>のAPIのメソッドを示します。"

#. Tag: title
#: Security.xml:1403
#, no-c-format
msgid "Identity Management API"
msgstr "ID管理のAPI"

#. Tag: para
#: Security.xml:1412 Security.xml:1828 Security.xml:2753 Security.xml:3177
#: Security.xml:3798 Security.xml:3967
#, no-c-format
msgid "Method"
msgstr "メソッド"

#. Tag: para
#: Security.xml:1415
#, no-c-format
msgid "Returns"
msgstr "戻り値"

#. Tag: literal
#: Security.xml:1428
#, no-c-format
msgid "createUser(String name, String password)"
msgstr "createUser(String name, String password)"

#. Tag: literal
#: Security.xml:1433 Security.xml:1452 Security.xml:1471 Security.xml:1490
#: Security.xml:1509 Security.xml:1529 Security.xml:1548 Security.xml:1567
#: Security.xml:1586 Security.xml:1606 Security.xml:1626 Security.xml:1740
#: Security.xml:1762 Security.xml:1780 Security.xml:2766 Security.xml:3248
#: Security.xml:3267 Security.xml:3286 Security.xml:3304 Security.xml:3849
#: Security.xml:3868 Security.xml:3887 Security.xml:3906
#, no-c-format
msgid "boolean"
msgstr "ブール型 "

#. Tag: para
#: Security.xml:1437
#, no-c-format
msgid ""
"Creates a new user account, with the specified name and password. Returns "
"<literal>true</literal> if successful, or <literal>false</literal> if not."
msgstr ""
"指定されたusernameとpasswordで新規ユーザーのアカウントを作成します。 もし作成"
"が成功すれば<literal>true</literal>を、さもなくば<literal>false</literal>を返"
"します。"

#. Tag: literal
#: Security.xml:1447
#, no-c-format
msgid "deleteUser(String name)"
msgstr "deleteUser(String name)"

#. Tag: para
#: Security.xml:1456
#, no-c-format
msgid ""
"Deletes the user account with the specified name. Returns <literal>true</"
"literal> if successful, or <literal>false</literal> if not."
msgstr ""
"指定された名前のユーザーを削除します。 もし成功すれば<literal>true</literal>"
"を、さもなくば<literal>false</literal>を返します。"

#. Tag: literal
#: Security.xml:1466
#, no-c-format
msgid "createRole(String role)"
msgstr "createRole(String role)"

#. Tag: para
#: Security.xml:1475
#, no-c-format
msgid ""
"Creates a new role, with the specified name. Returns <literal>true</literal> "
"if successful, or <literal>false</literal> if not."
msgstr ""
"指定された名前で新規のロールを作成します。 もし作成が成功すれば"
"<literal>true</literal>を、さもなくば<literal>false</literal>を返します。"

#. Tag: literal
#: Security.xml:1485
#, no-c-format
msgid "deleteRole(String name)"
msgstr "deleteRole(String name)"

#. Tag: para
#: Security.xml:1494
#, no-c-format
msgid ""
"Deletes the role with the specified name. Returns <literal>true</literal> if "
"successful, or <literal>false</literal> if not."
msgstr ""
"指定された名前のロールを削除します。 もし作成が成功すれば<literal>true</"
"literal>を、さもなくば<literal>false</literal>を返します。"

#. Tag: literal
#: Security.xml:1504
#, no-c-format
msgid "enableUser(String name)"
msgstr "enableUser(String name)"

#. Tag: para
#: Security.xml:1513
#, no-c-format
msgid ""
"Enables the user account with the specified name. Accounts that are not "
"enabled are not able to authenticate. Returns <literal>true</literal> if "
"successful, or <literal>false</literal> if not."
msgstr ""
"指定された名前のユーザーアカウントを活性化します。 活性化されていないアカウン"
"トは認証の対象とはなりません。もし成功すれば<literal>true</literal>を、さもな"
"くば<literal>false</literal>を返します"

#. Tag: literal
#: Security.xml:1524
#, no-c-format
msgid "disableUser(String name)"
msgstr "disableUser(String name)"

#. Tag: para
#: Security.xml:1533
#, no-c-format
msgid ""
"Disables the user account with the specified name. Returns <literal>true</"
"literal> if successful, or <literal>false</literal> if not."
msgstr ""
"指定された名前のユーザーアカウントを不活化します。 もし成功すれば"
"<literal>true</literal>を、さもなくば<literal>false</literal>を返します。"

#. Tag: literal
#: Security.xml:1543
#, no-c-format
msgid "changePassword(String name, String password)"
msgstr "changePassword(String name, String password)"

#. Tag: para
#: Security.xml:1552
#, no-c-format
msgid ""
"Changes the password for the user account with the specified name. Returns "
"<literal>true</literal> if successful, or <literal>false</literal> if not."
msgstr ""
"指定された名前のユーザーアカウントのpasswordの変更をします。 もし成功すれば"
"<literal>true</literal>を、さもなくば<literal>false</literal>を返します。"

#. Tag: literal
#: Security.xml:1562
#, no-c-format
msgid "isUserEnabled(String name)"
msgstr "isUserEnabled(String name)"

#. Tag: para
#: Security.xml:1571
#, no-c-format
msgid ""
"Returns <literal>true</literal> if the specified user account is enabled, or "
"<literal>false</literal> if it isn't."
msgstr ""
"もし、指定されたユーザーのアカウントが活性化されていれば <literal>true</"
"literal>を、さもなくば<literal>false</literal>を返します。"

#. Tag: literal
#: Security.xml:1581
#, no-c-format
msgid "grantRole(String name, String role)"
msgstr "grantRole(String name, String role)"

#. Tag: para
#: Security.xml:1590
#, no-c-format
msgid ""
"Grants the specified role to the specified user or role. The role must "
"already exist for it to be granted. Returns <literal>true</literal> if the "
"role is successfully granted, or <literal>false</literal> if it is already "
"granted to the user."
msgstr ""
"特定のロールをユーザーやロールに権限を付与します。 ロールは既に存在しているこ"
"とが必要です。 ロールの付与が成功した場合には<literal>true</literal>を返し、"
"もしそのロールがユーザーに既に付与されていた場合には<literal>false</literal>"
"を返します。"

#. Tag: literal
#: Security.xml:1601
#, no-c-format
msgid "revokeRole(String name, String role)"
msgstr "revokeRole(String name, String role)"

#. Tag: para
#: Security.xml:1610
#, no-c-format
msgid ""
"Revokes the specified role from the specified user or role. Returns "
"<literal>true</literal> if the specified user is a member of the role and it "
"is successfully revoked, or <literal>false</literal> if the user is not a "
"member of the role."
msgstr ""
"特定のユーザーあるいはロールから指定したロールを取り消します。 ユーザーが当該"
"のロールのメンバーであり、かつ取り消しが成功した場合には<literal>true</"
"literal>を返し、ユーザーが当該ロールのメンバーでなければ<literal>false</"
"literal>を返します。"

#. Tag: literal
#: Security.xml:1621
#, no-c-format
msgid "userExists(String name)"
msgstr "userExists(String name)"

#. Tag: para
#: Security.xml:1630
#, no-c-format
msgid ""
"Returns <literal>true</literal> if the specified user exists, or "
"<literal>false</literal> if it doesn't."
msgstr ""
"もし、当該のユーザーが存在すれば<literal>true</literal>、さもなくば"
"<literal>false</literal>を返します。"

#. Tag: literal
#: Security.xml:1640 Security.xml:2041
#, no-c-format
msgid "listUsers()"
msgstr "listUsers()"

#. Tag: literal
#: Security.xml:1645 Security.xml:1663 Security.xml:1681 Security.xml:1699
#: Security.xml:1717 Security.xml:1798
#, no-c-format
msgid "List"
msgstr "リスト"

#. Tag: para
#: Security.xml:1649
#, no-c-format
msgid "Returns a list of all user names, sorted in alpha-numeric order."
msgstr "ABC順にソートされたすべてのユーザー名の一覧を返します。"

#. Tag: literal
#: Security.xml:1658
#, no-c-format
msgid "listUsers(String filter)"
msgstr "listUsers(String filter)"

#. Tag: para
#: Security.xml:1667
#, no-c-format
msgid ""
"Returns a list of all user names filtered by the specified filter parameter, "
"sorted in alpha-numeric order."
msgstr ""
"指定されたパラメータでフィルタしたユーザー名のリストをABC順にソートして返しま"
"す"

#. Tag: literal
#: Security.xml:1676 Security.xml:1793 Security.xml:2059
#, no-c-format
msgid "listRoles()"
msgstr "listRoles()"

#. Tag: para
#: Security.xml:1685
#, no-c-format
msgid "Returns a list of all role names."
msgstr "すべてのロール名の一覧を返します"

#. Tag: literal
#: Security.xml:1694
#, no-c-format
msgid "getGrantedRoles(String name)"
msgstr "getGrantedRoles(String name)"

#. Tag: para
#: Security.xml:1703
#, no-c-format
msgid ""
"Returns a list of the names of all the roles explicitly granted to the "
"specified user name."
msgstr "指定されたユーザーに明示的に認められたロール名の一覧を返します"

#. Tag: literal
#: Security.xml:1712
#, no-c-format
msgid "getImpliedRoles(String name)"
msgstr "getImpliedRoles(String name)"

#. Tag: para
#: Security.xml:1721
#, no-c-format
msgid ""
"Returns a list of the names of all the roles implicitly granted to the "
"specified user name. Implicitly granted roles include those that are not "
"directly granted to a user, rather they are granted to the roles that the "
"user is a member of. For example, is the <literal>admin</literal> role is a "
"member of the <literal>user</literal> role, and a user is a member of the "
"<literal>admin</literal> role, then the implied roles for the user are both "
"the <literal>admin</literal>, and <literal>user</literal> roles."
msgstr ""
"指定されたユーザー名に対して暗示的に付与されているすべてのロール名のリストを"
"返します。 暗示的に付与されているロールとは、ユーザーに直接付与されているロー"
"ルではなく、ユーザーが所属するロールに対して付与されているロールを言いま"
"す。  例えば、<literal>admin</literal>ロールは<literal>user</literal>ロールの"
"メンバーであり、ユーザーが<literal>admin</literal>ロールのメンバーであれば、"
"このユーザーには暗示的に<literal>admin</literal>ロールと <literal>user</"
"literal>ロールが付与されている。"

#. Tag: literal
#: Security.xml:1735
#, no-c-format
msgid "authenticate(String name, String password)"
msgstr "authenticate(String name, String password)"

#. Tag: para
#: Security.xml:1744
#, no-c-format
msgid ""
"Authenticates the specified username and password using the configured "
"Identity Store. Returns <literal>true</literal> if successful or "
"<literal>false</literal> if authentication failed. Successful authentication "
"implies nothing beyond the return value of the method. It does not change "
"the state of the <literal>Identity</literal> component - to perform a proper "
"Seam login the <literal>Identity.login()</literal> must be used instead."
msgstr ""
"設定されたIDストアを使ってusernameとpasswordを認証します。 認証が成功すれば"
"<literal>true</literal>、失敗すれば<literal>false</literal>を返します。 認証"
"が成功しても、このメソッドの戻り値以外は何も変化しませんし、"
"<literal>Identity</literal>コンポーネントの状態も変化しません。 loginを適切に"
"行うためには<literal>Identity.login()</literal>が使用されなければなりません。"

#. Tag: literal
#: Security.xml:1757
#, no-c-format
msgid "addRoleToGroup(String role, String group)"
msgstr "addRoleToGroup(String role, String group)"

#. Tag: para
#: Security.xml:1766
#, no-c-format
msgid ""
"Adds the specified role as a member of the specified group. Returns true if "
"the operation is successful."
msgstr ""
"特定のロールを指定したグループのメンバーに追加します。 操作が成功した場合に"
"trueを返します。"

#. Tag: literal
#: Security.xml:1775
#, no-c-format
msgid "removeRoleFromGroup(String role, String group)"
msgstr "removeRoleFromGroup(String role, String group)"

#. Tag: para
#: Security.xml:1784
#, no-c-format
msgid ""
"Removes the specified role from the specified group. Returns true if the "
"operation is successful."
msgstr ""
"指定されたロールを指定されたグループから削除します。 もし成功すればtrueを返し"
"ます。"

#. Tag: para
#: Security.xml:1802
#, no-c-format
msgid "Lists the names of all roles."
msgstr "すべてのロール名のリスト"

#. Tag: para
#: Security.xml:1812
#, no-c-format
msgid ""
"Using the Identity Management API requires that the calling user has the "
"appropriate authorization to invoke its methods. The following table "
"describes the permission requirements for each of the methods in "
"<literal>IdentityManager</literal>. The permission targets listed below are "
"literal String values."
msgstr ""
"ID管理APIを使うためには、ユーザーはそのメソッドを呼び出す適切な権限を持ってい"
"る必要があります。 以下の表に<literal>IdentityManager</literal>にある個々のメ"
"ソッドの起動に必要な権限の一覧を示します。 権限はリテラル文字列で指定します。"

#. Tag: title
#: Security.xml:1819
#, no-c-format
msgid "Identity Management Security Permissions"
msgstr "ID管理 セキュリティパーミッション"

#. Tag: para
#: Security.xml:1831 Security.xml:3970
#, no-c-format
msgid "Permission Target"
msgstr "パーミッションの対象"

#. Tag: para
#: Security.xml:1834 Security.xml:3973
#, no-c-format
msgid "Permission Action"
msgstr "パーミッションのアクション"

#. Tag: literal
#: Security.xml:1843
#, no-c-format
msgid "createUser()"
msgstr "createUser()"

#. Tag: literal
#: Security.xml:1848 Security.xml:1866 Security.xml:1920 Security.xml:1938
#: Security.xml:1956 Security.xml:1974 Security.xml:1992 Security.xml:2010
#: Security.xml:2028 Security.xml:2046
#, no-c-format
msgid "seam.user"
msgstr "seam.user"

#. Tag: literal
#: Security.xml:1853 Security.xml:1889
#, no-c-format
msgid "create"
msgstr "作成"

#. Tag: literal
#: Security.xml:1861
#, no-c-format
msgid "deleteUser()"
msgstr "deleteUser()"

#. Tag: literal
#: Security.xml:1871 Security.xml:1907
#, no-c-format
msgid "delete"
msgstr "削除"

#. Tag: literal
#: Security.xml:1879
#, no-c-format
msgid "createRole()"
msgstr "createRole()"

#. Tag: literal
#: Security.xml:1884 Security.xml:1902 Security.xml:2064 Security.xml:2082
#: Security.xml:2100
#, no-c-format
msgid "seam.role"
msgstr "seam.role"

#. Tag: literal
#: Security.xml:1897
#, no-c-format
msgid "deleteRole()"
msgstr "deleteRole()"

#. Tag: literal
#: Security.xml:1915
#, no-c-format
msgid "enableUser()"
msgstr "enableUser()"

#. Tag: literal
#: Security.xml:1925 Security.xml:1943 Security.xml:1961 Security.xml:1997
#: Security.xml:2015 Security.xml:2087 Security.xml:2105
#, no-c-format
msgid "update"
msgstr "更新"

#. Tag: literal
#: Security.xml:1933
#, no-c-format
msgid "disableUser()"
msgstr "disableUser()"

#. Tag: literal
#: Security.xml:1951
#, no-c-format
msgid "changePassword()"
msgstr "changePassword()"

#. Tag: literal
#: Security.xml:1969
#, no-c-format
msgid "isUserEnabled()"
msgstr "isUserEnabled()"

#. Tag: literal
#: Security.xml:1979 Security.xml:2033 Security.xml:2051 Security.xml:2069
#, no-c-format
msgid "read"
msgstr "読み込み"

#. Tag: literal
#: Security.xml:1987
#, no-c-format
msgid "grantRole()"
msgstr "grantRole()"

#. Tag: literal
#: Security.xml:2005
#, no-c-format
msgid "revokeRole()"
msgstr "revokeRole()"

#. Tag: literal
#: Security.xml:2023
#, no-c-format
msgid "userExists()"
msgstr "userExists()"

#. Tag: literal
#: Security.xml:2077
#, no-c-format
msgid "addRoleToGroup()"
msgstr "addRoleToGroup()"

#. Tag: literal
#: Security.xml:2095
#, no-c-format
msgid "removeRoleFromGroup()"
msgstr "removeRoleFromGroup()"

#. Tag: para
#: Security.xml:2113
#, no-c-format
msgid ""
"The following code listing provides an example set of security rules that "
"grants access to all Identity Management-related methods to members of the "
"<literal>admin</literal> role:"
msgstr ""
"下の例では、<literal>admin</literal>ロールのメンバーすべてが、すべてのID管理"
"関連のメソッドへのアクセス権を付与されているセキュリティルールを示していま"
"す。"

#. Tag: programlisting
#: Security.xml:2118
#, no-c-format
msgid ""
"<![CDATA[rule ManageUsers\n"
"  no-loop\n"
"  activation-group \"permissions\"\n"
"when\n"
"  check: PermissionCheck(name == \"seam.user\", granted == false)\n"
"  Role(name == \"admin\")\n"
"then\n"
"  check.grant();\n"
"end\n"
"\n"
"rule ManageRoles\n"
"  no-loop\n"
"  activation-group \"permissions\"\n"
"when\n"
"  check: PermissionCheck(name == \"seam.role\", granted == false)\n"
"  Role(name == \"admin\")\n"
"then\n"
"  check.grant();\n"
"end\n"
"]]>"
msgstr ""
"<![CDATA[rule ManageUsers\n"
"  no-loop\n"
"  activation-group \"permissions\"\n"
"when\n"
"  check: PermissionCheck(name == \"seam.user\", granted == false)\n"
"  Role(name == \"admin\")\n"
"then\n"
"  check.grant();\n"
"end\n"
"\n"
"rule ManageRoles\n"
"  no-loop\n"
"  activation-group \"permissions\"\n"
"when\n"
"  check: PermissionCheck(name == \"seam.role\", granted == false)\n"
"  Role(name == \"admin\")\n"
"then\n"
"  check.grant();\n"
"end\n"
"]]>"

#. Tag: title
#: Security.xml:2125
#, no-c-format
msgid "Error Messages"
msgstr "エラーメッセージ"

#. Tag: para
#: Security.xml:2127
#, no-c-format
msgid ""
"The security API produces a number of default faces messages for various "
"security-related events. The following table lists the message keys that can "
"be used to override these messages by specifying them in a <literal>message."
"properties</literal> resource file. To suppress the message, just put the "
"key with an empty value in the resource file."
msgstr ""
"セキュリティAPIはセキュリティ関連イベントに対応するいくつかのデフォルトの"
"フェースメッセージを発生します。 以下の表には、リソースファイル"
"<literal>message.properties</literal>で、これらを上書きするためのメッセージ"
"キーを一覧にしています。 もし、これらのメッセージを出さないようにするのであれ"
"ば、リソースファイルで対応するキーの値をブランクにしてください。"

#. Tag: title
#: Security.xml:2135
#, no-c-format
msgid "Security Message Keys"
msgstr "セキュリティメッセージキー"

#. Tag: para
#: Security.xml:2144
#, no-c-format
msgid "Message Key"
msgstr "メッセージキー"

#. Tag: literal
#: Security.xml:2157
#, no-c-format
msgid "org.jboss.seam.loginSuccessful"
msgstr "org.jboss.seam.loginSuccessful"

#. Tag: para
#: Security.xml:2161
#, no-c-format
msgid ""
"This message is produced when a user successfully logs in via the security "
"API."
msgstr "セキュリティAPIを通して、無事ログインできたときに生成されます。"

#. Tag: literal
#: Security.xml:2169
#, no-c-format
msgid "org.jboss.seam.loginFailed"
msgstr "org.jboss.seam.loginFailed"

#. Tag: para
#: Security.xml:2173
#, no-c-format
msgid ""
"This message is produced when the login process fails, either because the "
"user provided an incorrect username or password, or because authentication "
"failed in some other way."
msgstr ""
"ユーザーネーム、パスワードの組み合わせ、或は何らかの認証のエラーにより、ユー"
"ザーがログインに失敗したときに生成されます。"

#. Tag: literal
#: Security.xml:2182
#, no-c-format
msgid "org.jboss.seam.NotLoggedIn"
msgstr "org.jboss.seam.NotLoggedIn"

#. Tag: para
#: Security.xml:2186
#, no-c-format
msgid ""
"This message is produced when a user attempts to perform an action or access "
"a page that requires a security check, and the user is not currently "
"authenticated."
msgstr ""
"ユーザーが認証されずにセキュリティチェックが必要な操作、あるいはページへのア"
"クセスを試みたときに生成されます。"

#. Tag: literal
#: Security.xml:2195
#, no-c-format
msgid "org.jboss.seam.AlreadyLoggedIn"
msgstr "org.jboss.seam.AlreadyLoggedIn"

#. Tag: para
#: Security.xml:2199
#, no-c-format
msgid ""
"This message is produced when a user that is already authenticated attempts "
"to log in again."
msgstr ""
"このメッセージは既に認証されたユーザーが再度ログインを試みた時に生成されま"
"す。"

#. Tag: title
#: Security.xml:2210
#, no-c-format
msgid "Authorization"
msgstr "認可"

#. Tag: para
#: Security.xml:2212
#, no-c-format
msgid ""
"There are a number of authorization mechanisms provided by the Seam Security "
"API for securing access to components, component methods, and pages. This "
"section describes each of these. An important thing to note is that if you "
"wish to use any of the advanced features (such as rule-based permissions) "
"then your <literal>components.xml</literal> may need to be configured to "
"support this - see the Configuration section above."
msgstr ""
"SeamのセキュリティAPIは、コンポーネント、コンポーネントのメソッド、それにペー"
"ジに対して多くの認可機能を提供します。 ここでは、それぞれの機能について説明し"
"ます。 ここで説明するような高度なセキュリティ機能（ルールベースの認可のよう"
"な）を使用する場合には<literal>components.xml</literal>に前述のような設定を記"
"述しておかなければならない、ということに留意してください。 "

#. Tag: title
#: Security.xml:2221
#, no-c-format
msgid "Core concepts"
msgstr "核となる概念"

#. Tag: para
#: Security.xml:2223
#, no-c-format
msgid ""
"Seam Security is built around the premise of users being granted roles and/"
"or permissions, allowing them to perform operations that may not otherwise "
"be permissible for users without the necessary security privileges. Each of "
"the authorization mechanisms provided by the Seam Security API are built "
"upon this core concept of roles and permissions, with an extensible "
"framework providing multiple ways to secure application resources."
msgstr ""
"Seamのセキュリティは必要なセキュリティ権限を持たないユーザーの操作を行わせな"
"いように、ロールとパーミッションによりユーザーの操作を制限する事を前提として"
"設計されています。 SeamセキュリティAPIの提供する認可メカニズムは、ロールと"
"パーミッションによるユーザー管理の概念に基づいて作られており、複数のアプリ"
"ケーションリソース保護の方法を提供する拡張可能なフレームワークを提供していま"
"す。"

#. Tag: title
#: Security.xml:2231
#, no-c-format
msgid "What is a role?"
msgstr "ロールとは"

#. Tag: para
#: Security.xml:2233
#, no-c-format
msgid ""
"A role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of "
"user that may have been granted certain privileges for performing one or "
"more specific actions within an application. They are simple constructs, "
"consisting of just a name such as \"admin\", \"user\", \"customer\", etc. "
"They can be granted either to users (or in some cases to other roles), and "
"are used to create logical groups of users for the convenient assignment of "
"specific application privileges."
msgstr ""
"ロールとは、アプリケーションの特定の操作を実施する特権を付与されてるユーザー"
"の<emphasis>グループ</emphasis>あるいは<emphasis>タイプ</emphasis>を言い、"
"\"admin\"、 \"user\"、 \"customer\"等の名前により構成されています。 これらの"
"ロールはユーザーに対して（あるいは場合により他のロールに対し）付与され、特定"
"のアプリケーションの操作に対する特権を持つユーザーの論理的なグループを作成す"
"る事を容易にしています。"

#. Tag: title
#: Security.xml:2251
#, no-c-format
msgid "What is a permission?"
msgstr "パーミッションとは？"

#. Tag: para
#: Security.xml:2253
#, no-c-format
msgid ""
"A permission is a privilege (sometimes once-off) for performing a single, "
"specific action. It is entirely possible to build an application using "
"nothing but permissions, however roles offer a higher level of convenience "
"when granting privileges to groups of users. They are slightly more complex "
"in structure than roles, essentially consisting of three \"aspects\"; a "
"target, an action, and a recipient. The target of a permission is the object "
"(or an arbitrary name or class) for which a particular action is allowed to "
"be performed by a specific recipient (or user). For example, the user \"Bob"
"\" may have permission to delete customer objects. In this case, the "
"permission target may be \"customer\", the permission action would be "
"\"delete\" and the recipient would be \"Bob\"."
msgstr ""
"パーミッションとは、一つの特定の操作を実行するための特権（時として1回限りの）"
"を言います。 パーミッションのみを使ってアプリケーションを組むことも可能です"
"が、ユーザーのグループに対して特定の特権を付与する事により、セキュリティ管理"
"をより容易にすることができます。 これらはロールよりも、構造上若干複雑で、 ”対"
"象(target)”、”操作(action)” と”受益者(receipient)”の三つの要素から構成されま"
"す。 パーミッションの対象は特定の受益者（ユーザー）により特定の操作が行われる"
"オブジェクト（あるいは、任意の名前、クラス）です。 例として、ユーザーBobは顧"
"客オブジェクトを削除するパーミッションを持つ、場合を考えてみると、 パーミッ"
"ションの対象は「顧客」、パーミッションの操作は「削除」、そして受益者はBobとい"
"う事になります。"

#. Tag: para
#: Security.xml:2273
#, no-c-format
msgid ""
"Within this documentation, permissions are generally represented in the form "
"<literal>target:action</literal> (omitting the recipient, although in "
"reality one is always required)."
msgstr ""
"このドキュメント中では権限は、実際には常に必要な受益者を省略して"
"<literal>target:action</literal> という形式で表示されています。"

#. Tag: title
#: Security.xml:2282
#, no-c-format
msgid "Securing components"
msgstr "コンポーネントの安全性を確保する"

#. Tag: para
#: Security.xml:2284
#, no-c-format
msgid ""
"Let's start by examining the simplest form of authorization, component "
"security, starting with the <literal>@Restrict</literal> annotation."
msgstr ""
"それでは、もっとも簡単な形式の認可、コンポーネントのセキュリティについて"
"<literal>@Restrict</literal>アノテーションから見てゆきましょう。"

#. Tag: title
#: Security.xml:2290
#, no-c-format
msgid "@Restrict vs Typesafe security annotations"
msgstr "@Restrictアノテーション とタイプセーフなセキュリティアノテーション"

#. Tag: para
#: Security.xml:2292
#, no-c-format
msgid ""
"While using the <literal>@Restrict</literal> annotation provides a powerful "
"and flexible method for security component methods due to its ability to "
"support EL expressions, it is recommended that the typesafe equivalent "
"(described later) be used, at least for the compile-time safety it provides."
msgstr ""
"<literal>@Restrict</literal>アノテーションを使うとEL式をサポートしていること"
"もあり、コンポーネントのメソッドに対して強力かつフレキシブルなセキュリティを"
"付与する事ができますが、コンパイル時の安全性等から、タイプセーフな同様の方法"
"（後述）が推奨されます。"

#. Tag: title
#: Security.xml:2300
#, no-c-format
msgid "The @Restrict annotation"
msgstr "@Restrictアノテーション"

#. Tag: para
#: Security.xml:2302
#, no-c-format
msgid ""
"Seam components may be secured either at the method or the class level, "
"using the <literal>@Restrict</literal> annotation. If both a method and it's "
"declaring class are annotated with <literal>@Restrict</literal>, the method "
"restriction will take precedence (and the class restriction will not apply). "
"If a method invocation fails a security check, then an exception will be "
"thrown as per the contract for <literal>Identity.checkRestriction()</"
"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
"the component class itself is equivalent to adding <literal>@Restrict</"
"literal> to each of its methods."
msgstr ""
"<literal>@Restrict</literal>アノテーションにより、Seamのコンポーネントにはク"
"ラスあるいはメソッドレベルでのセキュリティを付与する事ができます。 もし、クラ"
"スとその中のメソッドの両方に<literal>@Restrict</literal>アノテーションがあっ"
"た場合には、メソッドレベルの制限が優先され、クラスレベルの制限は結果として適"
"用されません。 もし、メソッドの起動がセキュリティチェックで失敗した場合には、"
"<literal>Identity.checkRestriction()</literal>単位で例外が発生します。 コン"
"ポーネントレベルでの<literal>@Restrict</literal>アノテーションは、そのコン"
"ポーネントのすべてのメソッドに<literal>@Restrict</literal>をアノテートしたの"
"と同じことになります。"

#. Tag: para
#: Security.xml:2312
#, no-c-format
msgid ""
"An empty <literal>@Restrict</literal> implies a permission check of "
"<literal>componentName:methodName</literal>. Take for example the following "
"component method:"
msgstr ""
"空の<literal>@Restrict</literal>は<literal>component:methodName</literal>を意"
"味します。 下のようなコンポーネントの例を見てみましょう。"

#. Tag: programlisting
#: Security.xml:2317
#, no-c-format
msgid ""
"<![CDATA[@Name(\"account\")\n"
"public class AccountAction {\n"
"    @Restrict public void delete() {\n"
"      ...\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"account\")\n"
"public class AccountAction {\n"
"    @Restrict public void delete() {\n"
"      ...\n"
"    }\n"
"}]]>"

#. Tag: para
#: Security.xml:2319
#, no-c-format
msgid ""
"In this example, the implied permission required to call the <literal>delete"
"()</literal> method is <literal>account:delete</literal>. The equivalent of "
"this would be to write <literal>@Restrict(\"#{s:hasPermission"
"('account','delete')}\")</literal>. Now let's look at another example:"
msgstr ""
"この例では、<literal>delete()</literal>を呼び出すためには<literal>account:"
"delete</literal>という権限が必要な事を暗黙的に示しています。 同様の内容は"
"<literal>@Restrict(\"#{s:hasPermission('account','delete')}\")</literal>と記"
"述する事もできます。他の例についても見てゆきましょう。"

#. Tag: programlisting
#: Security.xml:2326
#, no-c-format
msgid ""
"<![CDATA[@Restrict @Name(\"account\")\n"
"public class AccountAction {\n"
"    public void insert() {\n"
"      ...\n"
"    }\n"
"    @Restrict(\"#{s:hasRole('admin')}\")\n"
"    public void delete() {\n"
"      ...\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Restrict @Name(\"account\")\n"
"public class AccountAction {\n"
"    public void insert() {\n"
"      ...\n"
"    }\n"
"    @Restrict(\"#{s:hasRole('admin')}\")\n"
"    public void delete() {\n"
"      ...\n"
"    }\n"
"}]]>"

#. Tag: para
#: Security.xml:2328
#, no-c-format
msgid ""
"This time, the component class itself is annotated with <literal>@Restrict</"
"literal>. This means that any methods without an overriding "
"<literal>@Restrict</literal> annotation require an implicit permission "
"check. In the case of this example, the <literal>insert()</literal> method "
"requires a permission of <literal>account:insert</literal>, while the "
"<literal>delete()</literal> method requires that the user is a member of the "
"<literal>admin</literal> role."
msgstr ""
"ここでは、コンポーネントクラスに<literal>@Restrict</literal>とアノテーション"
"が付記されています。これは、`Restrictがオーバーライドされない限り、パーミッ"
"ションのチェックが暗示的に要求されることを示しています。この例の場合、"
"<literal>insert()</literal>は<literal>account:insert</literal>のパーミッショ"
"ンを必要とし、<literal>delete()</literal>はユーザーが<literal>admin</literal>"
"ロールに属していることが必要な事を示しています。"

#. Tag: para
#: Security.xml:2336
#, no-c-format
msgid ""
"Before we go any further, let's address the <literal>#{s:hasRole()}</"
"literal> expression seen in the above example. Both <literal>s:hasRole</"
"literal> and <literal>s:hasPermission</literal> are EL functions, which "
"delegate to the correspondingly named methods of the <literal>Identity</"
"literal> class. These functions can be used within any EL expression "
"throughout the entirety of the security API."
msgstr ""
"先に進む前に、上の例で見た <literal>#{s:hasRole()}</literal> 式について見てみ"
"ましょう。 <literal>s:hasRole</literal> も <literal>s:hasPermission</literal>"
"もEL式であり、 <literal>Identity</literal>クラスの同様の名前のメソッドに対応"
"します。 これらセキュリティAPIのすべてについてEL式の中で使う事ができます。"

#. Tag: para
#: Security.xml:2343
#, no-c-format
msgid ""
"Being an EL expression, the value of the <literal>@Restrict</literal> "
"annotation may reference any objects that exist within a Seam context. This "
"is extremely useful when performing permission checks for a specific object "
"instance. Look at this example:"
msgstr ""
"EL式とすることで、<literal>@Restrict</literal>アノテーションは、Seamコンテキ"
"スト中のどのようなオブジェクトの値でも参照することができるようになります。 こ"
"れは、特定のオブジェクトのインスタンスをチェックしてパーミッションを決定する"
"場合に非常に有効な方法です。下の例を見てみましょう。"

#. Tag: programlisting
#: Security.xml:2349
#, no-c-format
msgid ""
"<![CDATA[@Name(\"account\")\n"
"public class AccountAction {\n"
"    @In Account selectedAccount;\n"
"    @Restrict(\"#{s:hasPermission(selectedAccount,'modify')}\")\n"
"    public void modify() {\n"
"        selectedAccount.modify();\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"account\")\n"
"public class AccountAction {\n"
"    @In Account selectedAccount;\n"
"    @Restrict(\"#{s:hasPermission(selectedAccount,'modify')}\")\n"
"    public void modify() {\n"
"        selectedAccount.modify();\n"
"    }\n"
"}]]>"

#. Tag: para
#: Security.xml:2351
#, no-c-format
msgid ""
"The interesting thing to note from this example is the reference to "
"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
"literal> function call. The value of this variable will be looked up from "
"within the Seam context, and passed to the <literal>hasPermission()</"
"literal> method in <literal>Identity</literal>, which in this case can then "
"determine if the user has the required permission for modifying the "
"specified <literal>Account</literal> object."
msgstr ""
"ここで興味深いのは、<literal>hasPermission()</literal>というファンクション中"
"で<literal>selectedAccout</literal>を参照している事です。 この変数の値はSeam"
"のコンテキスト中で検索され、<literal>Identity</literal>の"
"<literal>hasPermission()</literal>に渡され、この例の場合、特定の"
"<literal>Account</literal>のオブジェクトに対する変更許可を持っているかを決定"
"しています。"

#. Tag: title
#: Security.xml:2361
#, no-c-format
msgid "Inline restrictions"
msgstr "インラインによる制約"

#. Tag: para
#: Security.xml:2362
#, no-c-format
msgid ""
"Sometimes it might be desirable to perform a security check in code, without "
"using the <literal>@Restrict</literal> annotation. In this situation, simply "
"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
"expression, like this:"
msgstr ""
"時として、<literal>@Restrict</literal>アノテーションを使わずに、コードでセ"
"キュリティチェックを行いたい場合があるかもしれません。この様な場合には、下の"
"ように<literal>Identity.checkRestriction()</literal>を使って、セキュリティ式"
"を評価することができます。"

#. Tag: programlisting
#: Security.xml:2368
#, no-c-format
msgid ""
"<![CDATA[public void deleteCustomer() {\n"
"    Identity.instance().checkRestriction(\"#{s:hasPermission"
"(selectedCustomer,'delete')}\");\n"
"}]]>"
msgstr ""
"<![CDATA[public void deleteCustomer() {\n"
"    Identity.instance().checkRestriction(\"#{s:hasPermission"
"(selectedCustomer,'delete')}\");\n"
"}]]>"

#. Tag: para
#: Security.xml:2370
#, no-c-format
msgid ""
"If the expression specified doesn't evaluate to <literal>true</literal>, "
"either"
msgstr "もし式が<literal>true</literal>と評価されなかった場合には、"

#. Tag: para
#: Security.xml:2376
#, no-c-format
msgid ""
"if the user is not logged in, a <literal>NotLoggedInException</literal> "
"exception is thrown or"
msgstr ""
"ユーザーがログインしていなかったのであれば、NotLoggedInExceptionが投げられ、"

#. Tag: para
#: Security.xml:2382
#, no-c-format
msgid ""
"if the user is logged in, an <literal>AuthorizationException</literal> "
"exception is thrown."
msgstr ""
"ユーザーがログインしていた場合には、AuthorizationExceptionが投げられます。"

#. Tag: para
#: Security.xml:2389
#, no-c-format
msgid ""
"It is also possible to call the <literal>hasRole()</literal> and "
"<literal>hasPermission()</literal> methods directly from Java code:"
msgstr ""
"また、下のようにJavaコードから直接<literal>hasRole()</literal>や"
"<literal>hasPermission()</literal>メソッドを呼ぶこともできます。"

#. Tag: programlisting
#: Security.xml:2394
#, no-c-format
msgid ""
"<![CDATA[if (!Identity.instance().hasRole(\"admin\"))\n"
"     throw new AuthorizationException(\"Must be admin to perform this action"
"\");\n"
"\n"
"if (!Identity.instance().hasPermission(\"customer\", \"create\"))\n"
"     throw new AuthorizationException(\"You may not create new customers"
"\");]]>"
msgstr ""
"<![CDATA[if (!Identity.instance().hasRole(\"admin\"))\n"
"     throw new AuthorizationException(\"Must be admin to perform this action"
"\");\n"
"\n"
"if (!Identity.instance().hasPermission(\"customer\", \"create\"))\n"
"     throw new AuthorizationException(\"You may not create new customers"
"\");]]>"

#. Tag: title
#: Security.xml:2400
#, no-c-format
msgid "Security in the user interface"
msgstr "ユーザーインタフェースのセキュリティ"

#. Tag: para
#: Security.xml:2402
#, no-c-format
msgid ""
"One indication of a well designed user interface is that the user is not "
"presented with options for which they don't have the necessary privileges to "
"use. Seam Security allows conditional rendering of either 1) sections of a "
"page or 2) individual controls, based upon the privileges of the user, using "
"the very same EL expressions that are used for component security."
msgstr ""
"適切なユーザーインタフェースのデザインの一つとして、ユーザーが使用する権限を"
"有しないオプションの表示をしないようにすることがあります。 Seamのセキュリティ"
"はユーザーの権限に応じて、コンポーネントのセキュリティで使用したのと同様にEL"
"式を使用する事により1）ページ単位 2）個々のコントロール単位 で描画を管理する"
"事ができます。"

#. Tag: para
#: Security.xml:2409
#, no-c-format
msgid ""
"Let's take a look at some examples of interface security. First of all, "
"let's pretend that we have a login form that should only be rendered if the "
"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
"literal> property, we can write this:"
msgstr ""
"インタフェースのセキュリティの例について見てゆきましょう。 まず最初に、ログイ"
"ンしていないユーザーの時だけ表示されるログインフォームについて考えてみましょ"
"う。  <literal>identity.isLoggedIn()</literal>属性を使えば下のように記述でき"
"ます。"

#. Tag: programlisting
#: Security.xml:2415
#, no-c-format
msgid ""
"<![CDATA[<h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\">]]"
">"
msgstr ""
"<![CDATA[<h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\">]]"
">"

#. Tag: para
#: Security.xml:2417
#, no-c-format
msgid ""
"If the user isn't logged in, then the login form will be rendered - very "
"straight forward so far. Now let's pretend there is a menu on the page that "
"contains some actions which should only be accessible to users in the "
"<literal>manager</literal> role. Here's one way that these could be written:"
msgstr ""
"もしユーザーがログインしていなければ、ログインフォームが表示されます（実に単"
"純ですね）。 次に、<literal>manager</literal>ロールを持っている人達だけがアク"
"セス可能なメニューが必要だと仮定しましょう。 このような場合の一つの方法とし"
"て、下に例を示したあります。"

#. Tag: programlisting
#: Security.xml:2423
#, no-c-format
msgid ""
"<![CDATA[<h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#"
"{s:hasRole('manager')}\">\n"
"    Manager Reports\n"
"</h:outputLink>]]>"
msgstr ""
"<![CDATA[<h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#"
"{s:hasRole('manager')}\">\n"
"    Manager Reports\n"
"</h:outputLink>]]>"

#. Tag: para
#: Security.xml:2425
#, no-c-format
msgid ""
"This is also quite straight forward. If the user is not a member of the "
"<literal>manager</literal> role, then the outputLink will not be rendered. "
"The <literal>rendered</literal> attribute can generally be used on the "
"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
"<literal>&lt;s:span&gt;</literal> control."
msgstr ""
"これも、たいへんシンプルで、ユーザーが<literal>manager</literal>ロールを持っ"
"ていなければ、outputLinkは描画されません。<literal>rendered</literal>属性は一"
"般に制御そのものに使われたり、<literal>&lt;s:div&gt;</literal> や "
"<literal>&lt;s:span&gt;</literal>の中で制御の目的に使われます。"

#. Tag: para
#: Security.xml:2432
#, no-c-format
msgid ""
"Now for something more complex. Let's say you have a <literal>h:dataTable</"
"literal> control on a page listing records for which you may or may not wish "
"to render action links depending on the user's privileges. The <literal>s:"
"hasPermission</literal> EL function allows us to pass in an object parameter "
"which can be used to determine whether the user has the requested permission "
"for that object or not. Here's how a dataTable with secured links might look:"
msgstr ""
"次にもう少し複雑な例： <literal>h:dataTable</literal>の制御用のアクションリン"
"クの表示非表示をユーザーの権限により制御する事を考えます。 EL式<literal>s:"
"hasPermission</literal>により、ユーザーが必要な権限を持っているか否かを決定す"
"るために必要なオブジェクトをパラメータとして渡すことができます。 以下に、セ"
"キュリティを向上させたリンクを持たせた<literal>h:dataTable</literal>の例を示"
"します。"

#. Tag: programlisting
#: Security.xml:2440
#, no-c-format
msgid ""
"<![CDATA[<h:dataTable value=\"#{clients}\" var=\"cl\">\n"
"    <h:column>\n"
"        <f:facet name=\"header\">Name</f:facet>\n"
"        #{cl.name}\n"
"    </h:column>\n"
"    <h:column>\n"
"        <f:facet name=\"header\">City</f:facet>\n"
"        #{cl.city}\n"
"    </h:column>\n"
"    <h:column>\n"
"        <f:facet name=\"header\">Action</f:facet>\n"
"        <s:link value=\"Modify Client\" action=\"#{clientAction.modify}\"\n"
"                rendered=\"#{s:hasPermission(cl,'modify')\"/>\n"
"        <s:link value=\"Delete Client\" action=\"#{clientAction.delete}\"\n"
"                rendered=\"#{s:hasPermission(cl,'delete')\"/>\n"
"    </h:column>\n"
"</h:dataTable>]]>"
msgstr ""
"<![CDATA[<h:dataTable value=\"#{clients}\" var=\"cl\">\n"
"    <h:column>\n"
"        <f:facet name=\"header\">Name</f:facet>\n"
"        #{cl.name}\n"
"    </h:column>\n"
"    <h:column>\n"
"        <f:facet name=\"header\">City</f:facet>\n"
"        #{cl.city}\n"
"    </h:column>\n"
"    <h:column>\n"
"        <f:facet name=\"header\">Action</f:facet>\n"
"        <s:link value=\"Modify Client\" action=\"#{clientAction.modify}\"\n"
"                rendered=\"#{s:hasPermission(cl,'modify')\"/>\n"
"        <s:link value=\"Delete Client\" action=\"#{clientAction.delete}\"\n"
"                rendered=\"#{s:hasPermission(cl,'delete')\"/>\n"
"    </h:column>\n"
"</h:dataTable>]]>"

#. Tag: title
#: Security.xml:2445
#, no-c-format
msgid "Securing pages"
msgstr "ページ単位のセキュリティ"

#. Tag: para
#: Security.xml:2446
#, no-c-format
msgid ""
"Page security requires that the application is using a <literal>pages.xml</"
"literal> file, however is extremely simple to configure. Simply include a "
"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
"literal> elements that you wish to secure. If no explicit restriction is "
"specified by the <literal>restrict</literal> element, an implied permission "
"of <literal>/viewId.xhtml:render</literal> will be checked when the page is "
"accessed via a non-faces (GET) request, and a permission of <literal>/viewId."
"xhtml:restore</literal> will be required when any JSF postback (form "
"submission) originates from the page. Otherwise, the specified restriction "
"will be evaluated as a standard security expression. Here's a couple of "
"examples:"
msgstr ""
"ページレベルのセキュリティはアプリケーションが<literal>pages.xml</literal>を"
"使用していることが必要ですが、設定自身は非常に簡単です。単に保護したいページ"
"の <literal>page</literal>エレメントに<literal>&lt;restrict/&gt;</literal>を"
"追加するだけです。 明示的に<literal>restrict</literal>で制限をしない場合、 当"
"該ページに対してGET要求でアクセスが試みられると <literal>/viewId.xhtml:"
"render</literal> がチェックされ、またJSFポストバック（フォームのサブミッショ"
"ン）に対しては <literal>/viewId.xhtml:restore</literal>権限がチェックされま"
"す。 これ以外の場合には、指定した制限について通常のセキュリティ式評価が行われ"
"ます。 以下にいくつかの例を示します。 "

#. Tag: programlisting
#: Security.xml:2457
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/settings.xhtml\">\n"
"    <restrict/>\n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/settings.xhtml\">\n"
"    <restrict/>\n"
"</page>]]>"

#. Tag: para
#: Security.xml:2459
#, no-c-format
msgid ""
"This page has an implied permission of <literal>/settings.xhtml:render</"
"literal> required for non-faces requests and an implied permission of "
"<literal>/settings.xhtml:restore</literal> for faces requests."
msgstr ""
"このページは暗黙的に、GET要求に対して<literal>/settings.xhtml:render</"
"literal>権限を要求し、フェース要求に対しては<literal>/settings.xhtml:"
"restore</literal>権限を要求しています。"

#. Tag: programlisting
#: Security.xml:2464
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/reports.xhtml\">\n"
"    <restrict>#{s:hasRole('admin')}</restrict>\n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/reports.xhtml\">\n"
"    <restrict>#{s:hasRole('admin')}</restrict>\n"
"</page>]]>"

#. Tag: para
#: Security.xml:2466
#, no-c-format
msgid ""
"Both faces and non-faces requests to this page require that the user is a "
"member of the <literal>admin</literal> role."
msgstr ""
"このページに対するfacesあるいはnon-facesな要求はユーザーが<literal>admin</"
"literal>ロールのメンバーである事が必要です。"

#. Tag: title
#: Security.xml:2474
#, no-c-format
msgid "Securing Entities"
msgstr "エンティティのセキュリティ"

#. Tag: para
#: Security.xml:2476
#, no-c-format
msgid ""
"Seam security also makes it possible to apply security restrictions to read, "
"insert, update and delete actions for entities."
msgstr ""
"Seamのセキュリティは、エンティティ単位でのread,insert,updateおよびdelete操作"
"に対してのセキュリティ制約をかけることを可能にしています。"

#. Tag: para
#: Security.xml:2481
#, no-c-format
msgid ""
"To secure all actions for an entity class, add a <literal>@Restrict</"
"literal> annotation on the class itself:"
msgstr ""
"エンティティクラスのアクション全部に対してセキュリティをかけたいのであれば、"
"下のようにクラスに<literal>@Restrict</literal>アノテーションを付記します。"

#. Tag: programlisting
#: Security.xml:2486
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"@Name(\"customer\")\n"
"@Restrict\n"
"public class Customer {\n"
"  ...\n"
"}]]>"
msgstr ""
"<![CDATA[@Entity\n"
"@Name(\"customer\")\n"
"@Restrict\n"
"public class Customer {\n"
"  ...\n"
"}]]>"

#. Tag: para
#: Security.xml:2488
#, no-c-format
msgid ""
"If no expression is specified in the <literal>@Restrict</literal> "
"annotation, the default security check that is performed is a permission "
"check of <literal>entity:action</literal>, where the permission target is "
"the entity instance, and the <literal>action</literal> is either "
"<literal>read</literal>, <literal>insert</literal>, <literal>update</"
"literal> or <literal>delete</literal>."
msgstr ""
"もし、<literal>@Restrict</literal>が評価式無しで付記されていれば、デフォルト"
"として<literal>entity:action</literal>のパーミッションがチェックされます。 こ"
"こで、パーミッションの対象はエンティティのインスタンスで、<literal>action</"
"literal> は <literal>read</literal>, <literal>insert</literal>, "
"<literal>update</literal> あるいは <literal>delete</literal>のいずれかです。"

#. Tag: para
#: Security.xml:2495
#, no-c-format
msgid ""
"It is also possible to only restrict certain actions, by placing a "
"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
"method (annotated as follows):"
msgstr ""
"また、下のようにエンティティのライフサイクルに<literal>@Restrict</literal> ア"
"ノテーションを付記することにより、特定の操作だけに制約を課すことができます。"

#. Tag: para
#: Security.xml:2502
#, no-c-format
msgid ""
"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
"from the database. Use this method to configure a <literal>read</literal> "
"permission."
msgstr ""
"<literal>@PostLoad</literal> - エンティティのインスタンスがデータベースから"
"ロードされた後に呼び出されます。このメソッドは<literal>read</literal> パー"
"ミッションの設定に使用してください。"

#. Tag: para
#: Security.xml:2508
#, no-c-format
msgid ""
"<literal>@PrePersist</literal> - Called before a new instance of the entity "
"is inserted. Use this method to configure an <literal>insert</literal> "
"permission."
msgstr ""
"<literal>@PrePersist</literal> - エンティティの新規のインスタンスが (データ"
"ベースに）挿入される前に呼び出されます。 このメソッドは<literal>insert</"
"literal> パーミッションの設定に使用してください。"

#. Tag: para
#: Security.xml:2514
#, no-c-format
msgid ""
"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
"method to configure an <literal>update</literal> permission."
msgstr ""
"<literal>@PreUpdate</literal> - エンティティが更新される前に呼び出されます。 "
"このメソッドは<literal>update</literal>パーミッションの設定に使用してくださ"
"い。"

#. Tag: para
#: Security.xml:2520
#, no-c-format
msgid ""
"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
"method to configure a <literal>delete</literal> permission."
msgstr ""
"<literal>@PreRemove</literal> - エンティティが削除される前に呼び出されます。 "
"このメソッドは<literal>delete</literal>パーミッションの設定に使用してくださ"
"い。"

#. Tag: para
#: Security.xml:2527
#, no-c-format
msgid ""
"Here's an example of how an entity would be configured to perform a security "
"check for any <literal>insert</literal> operations. Please note that the "
"method is not required to do anything, the only important thing in regard to "
"security is how it is annotated:"
msgstr ""
"ここでは<literal>insert</literal>操作に対してのセキュリティチェックをするため"
"のエンティティの設定方法を示しています。 ここで注意していただきたいのは、メ"
"ソッドの内容はセキュリティと関係なく、アノテーションの仕方が重要な事です。"

#. Tag: programlisting
#: Security.xml:2533
#, no-c-format
msgid ""
"<![CDATA[\n"
"  @PrePersist @Restrict\n"
"  public void prePersist() {}\n"
"   ]]>"
msgstr ""
"<![CDATA[\n"
"  @PrePersist @Restrict\n"
"  public void prePersist() {}\n"
"   ]]>"

#. Tag: title
#: Security.xml:2536
#, no-c-format
msgid "Using <literal>/META-INF/orm.xml</literal>"
msgstr "<literal>/META-INF/orm.xml</literal>の使用"

#. Tag: para
#: Security.xml:2539
#, no-c-format
msgid ""
"You can also specify the call back method in <literal>/META-INF/orm.xml</"
"literal>:"
msgstr ""
"<literal>/META-INF/orm.xml</literal>にコールバックメソッドを指定する事もでき"
"ます:"

#. Tag: programlisting
#: Security.xml:2543
#, no-c-format
msgid ""
"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
"orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
"                 version=\"1.0\">\n"
"\n"
"   <entity class=\"Customer\">\n"
"      <pre-persist method-name=\"prePersist\" />\n"
"   </entity>\n"
"\n"
"</entity-mappings>]]>"
msgstr ""
"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
"orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
"                 version=\"1.0\">\n"
"\n"
"   <entity class=\"Customer\">\n"
"      <pre-persist method-name=\"prePersist\" />\n"
"   </entity>\n"
"\n"
"</entity-mappings>]]>"

#. Tag: para
#: Security.xml:2545
#, no-c-format
msgid ""
"Of course, you still need to annotate the <literal>prePersist()</literal> "
"method on <literal>Customer</literal> with <literal>@Restrict</literal>"
msgstr ""
"もちろん この場合も<literal>Customer</literal>の<literal>prePersist()</"
"literal> メソッドに<literal>@Restrict</literal>アノテーションは必要です。"

#. Tag: para
#: Security.xml:2551
#, no-c-format
msgid ""
"And here's an example of an entity permission rule that checks if the "
"authenticated user is allowed to insert a new <literal>MemberBlog</literal> "
"record (from the seamspace example). The entity for which the security check "
"is being made is automatically inserted into the working memory (in this "
"case <literal>MemberBlog</literal>):"
msgstr ""
"これは、認証されているユーザーが新規に<literal>MemberBlog</literal>レコードを"
"追加する事ができるか否かをチェックする、エンティティ権限ルールの例（サンプル"
"ソースのseamspaceのコードから）です。 セキュリティチェックの対象となるエン"
"ティティは自動的にワーキングメモリー（この場合、<literal>MemberBlog</"
"literal>）に挿入されます。"

#. Tag: programlisting
#: Security.xml:2557
#, no-c-format
msgid ""
"<![CDATA[rule InsertMemberBlog\n"
"  no-loop\n"
"  activation-group \"permissions\"\n"
"when\n"
"  principal: Principal()\n"
"  memberBlog: MemberBlog(member : member -> (member.getUsername().equals"
"(principal.getName())))\n"
"  check: PermissionCheck(target == memberBlog, action == \"insert\", granted "
"== false)\n"
"then\n"
"  check.grant();\n"
"end;]]>"
msgstr ""
"<![CDATA[rule InsertMemberBlog\n"
"  no-loop\n"
"  activation-group \"permissions\"\n"
"when\n"
"  principal: Principal()\n"
"  memberBlog: MemberBlog(member : member -> (member.getUsername().equals"
"(principal.getName())))\n"
"  check: PermissionCheck(target == memberBlog, action == \"insert\", granted "
"== false)\n"
"then\n"
"  check.grant();\n"
"end;]]>"

#. Tag: para
#: Security.xml:2559
#, no-c-format
msgid ""
"This rule will grant the permission <literal>memberBlog:insert</literal> if "
"the currently authenticated user (indicated by the <literal>Principal</"
"literal> fact) has the same name as the member for which the blog entry is "
"being created. The \"<literal>principal: Principal()</literal>\" structure "
"that can be seen in the example code is a variable binding - it binds the "
"instance of the <literal>Principal</literal> object from the working memory "
"(placed there during authentication) and assigns it to a variable called "
"<literal>principal</literal>. Variable bindings allow the value to be "
"referred to in other places, such as the following line which compares the "
"member's username to the <literal>Principal</literal> name. For more "
"details, please refer to the JBoss Rules documentation."
msgstr ""
"このルールは<literal>Principal</literal>ファクトで示される現在の認証ユーザー"
"がブログのエントリを作成したメンバーと同じ名前であれば<literal>memberBlog:"
"insert</literal>パーミッションを付与します。  例示したコード中にある、構造体 "
"\"<literal>principal: Principal()</literal>\" は認証の過程で挿入された ワーキ"
"ングメモリ中の<literal>Principal</literal>オブジェクトへの変数結合で、変数"
"<literal>principal</literal>と命名されています。 変数結合にする事により、他の"
"場所で値が参照可能となり、下のように<literal>Principal</literal>名とメンバー"
"のユーザー名を比較する事ができます。 詳細は、JBoss Rules ドキュメントを参照し"
"てください。"

#. Tag: para
#: Security.xml:2569
#, no-c-format
msgid ""
"Finally, we need to install a listener class that integrates Seam security "
"with your JPA provider."
msgstr ""
"最後に、JPAプロバイダをSeamセキュリティと統合するために、リスナークラスをイン"
"ストールします。"

#. Tag: title
#: Security.xml:2575
#, no-c-format
msgid "Entity security with JPA"
msgstr "JPAでのエンティティセキュリティ"

#. Tag: para
#: Security.xml:2577
#, no-c-format
msgid ""
"Security checks for EJB3 entity beans are performed with an "
"<literal>EntityListener</literal>. You can install this listener by using "
"the following <literal>META-INF/orm.xml</literal> file:"
msgstr ""
"EJB3エンティティBeanのセキュリティチェックは<literal>EntityListener</literal>"
"により行われ、下記のような<literal>META-INF/orm.xml</literal>の設定でリスナー"
"をインストールすることができます。"

#. Tag: programlisting
#: Security.xml:2582
#, no-c-format
msgid ""
"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
"orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
"                 version=\"1.0\">\n"
"\n"
"    <persistence-unit-metadata>\n"
"        <persistence-unit-defaults>\n"
"            <entity-listeners>\n"
"                <entity-listener class=\"org.jboss.seam.security."
"EntitySecurityListener\"/>\n"
"            </entity-listeners>\n"
"        </persistence-unit-defaults>\n"
"    </persistence-unit-metadata>\n"
"\n"
"</entity-mappings>]]>"
msgstr ""
"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
"orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
"                 version=\"1.0\">\n"
"\n"
"    <persistence-unit-metadata>\n"
"        <persistence-unit-defaults>\n"
"            <entity-listeners>\n"
"                <entity-listener class=\"org.jboss.seam.security."
"EntitySecurityListener\"/>\n"
"            </entity-listeners>\n"
"        </persistence-unit-defaults>\n"
"    </persistence-unit-metadata>\n"
"\n"
"</entity-mappings>]]>"

#. Tag: title
#: Security.xml:2587
#, no-c-format
msgid "Entity security with a Managed Hibernate Session"
msgstr "管理されたHibernateセッションにおけるエンティティのセキュリティ"

#. Tag: para
#: Security.xml:2589
#, no-c-format
msgid ""
"If you are using a Hibernate <literal>SessionFactory</literal> configured "
"via Seam, and are using annotations, or <literal>orm.xml</literal>, then you "
"don't need to do anything special to use entity security."
msgstr ""
"Seamで設定されるHibernateの<literal>SessionFactory</literal>とアノテーション"
"を使用している場合、あるいは<literal>orm.xml</literal>を使用している場合には"
"エンティティセキュリティ機能を使用するために特別な設定をする必要はありませ"
"ん。"

#. Tag: title
#: Security.xml:2600
#, no-c-format
msgid "Typesafe Permission Annotations"
msgstr "タイプセーフなアクセス権のアノテーション"

#. Tag: para
#: Security.xml:2602
#, no-c-format
msgid ""
"Seam provides a number of annotations that may be used as an alternative to "
"<literal>@Restrict</literal>, which have the added advantage of providing "
"compile-time safety as they don't support arbitrary EL expressions in the "
"same way that <literal>@Restrict</literal> does."
msgstr ""
"Seamは<literal>@Restrict</literal>に代わるアノテーションをいくつか持ってお"
"り、これらを使う事により<literal>@Restrict</literal>とは異なりEL式の評価を行"
"わないので、コンパイル時の安全性を提供します。"

#. Tag: para
#: Security.xml:2608
#, no-c-format
msgid ""
"Out of the box, Seam comes with annotations for standard CRUD-based "
"permissions, however it is a simple matter to add your own. The following "
"annotations are provided in the <literal>org.jboss.seam.annotations."
"security</literal> package:"
msgstr ""
"Seamには標準のCRUD操作に関するパーミッション用のアノテーションが提供されてい"
"ますが、独自のアノテーションを作成する事もできます。 以下は<literal>org."
"jboss.seam.annotations.security</literal>パッケージで配布されているアノテー"
"ションです。"

#. Tag: para
#: Security.xml:2615
#, no-c-format
msgid "@Insert"
msgstr "@Insert"

#. Tag: para
#: Security.xml:2618
#, no-c-format
msgid "@Read"
msgstr "@Read"

#. Tag: para
#: Security.xml:2621
#, no-c-format
msgid "@Update"
msgstr "@Update"

#. Tag: para
#: Security.xml:2624
#, no-c-format
msgid "@Delete"
msgstr "@Delete"

#. Tag: para
#: Security.xml:2628
#, no-c-format
msgid ""
"To use these annotations, simply place them on the method or parameter for "
"which you wish to perform a security check. If placed on a method, then they "
"should specify a target class for which the permission will be checked. Take "
"the following example:"
msgstr ""
"これらのアノテーションを使うには、単にセキュリティチェックを行いたいメソッド"
"やパラメータをアノテートするだけです。 メソッドがアノテートされた場合には、ア"
"クセス権のチェックの対象となるターゲットクラスも指定する必要があります。 以下"
"の例を見てください。"

#. Tag: programlisting
#: Security.xml:2634
#, no-c-format
msgid ""
"<![CDATA[  @Insert(Customer.class)\n"
"  public void createCustomer() {\n"
"    ...\n"
"  }]]>"
msgstr ""
"<![CDATA[  @Insert(Customer.class)\n"
"  public void createCustomer() {\n"
"    ...\n"
"  }]]>"

#. Tag: para
#: Security.xml:2636
#, no-c-format
msgid ""
"In this example, a permission check will be performed for the user to ensure "
"that they have the rights to create new <literal>Customer</literal> objects. "
"The target of the permission check will be <literal>Customer.class</literal> "
"(the actual <literal>java.lang.Class</literal> instance itself), and the "
"action is the lower case representation of the annotation name, which in "
"this example is <literal>insert</literal>."
msgstr ""
"この例ではユーザーが新規の<literal>Customer</literal>オブジェクトを作成する権"
"限があるか否かパーミッションチェックを行います。 パーミッションチェックの対象"
"は<literal>Customer.class</literal>（<literal>java.lang.Class</literal>インス"
"タンスそのもの）で、アクションはアノテーション名の小文字に変換されたもの、こ"
"こでは<literal>insert</literal>、となります。"

#. Tag: para
#: Security.xml:2643
#, no-c-format
msgid ""
"It is also possible to annotate the parameters of a component method in the "
"same way. If this is done, then it is not required to specify a permission "
"target (as the parameter value itself will be the target of the permission "
"check):"
msgstr ""
"同様にコンポーネントのメソッドのパラメータに対してもアノテートする事ができま"
"す。 これを行った場合には、パラメータの値がアクセス権チェックの対象ですから、"
"アクセス権のターゲットを指定する必要はありません。"

#. Tag: programlisting
#: Security.xml:2648
#, no-c-format
msgid ""
"<![CDATA[  public void updateCustomer(@Update Customer customer) {\n"
"    ...\n"
"  }]]>"
msgstr ""
"<![CDATA[  public void updateCustomer(@Update Customer customer) {\n"
"    ...\n"
"  }]]>"

#. Tag: para
#: Security.xml:2650
#, no-c-format
msgid ""
"To create your own security annotation, you simply need to annotate it with "
"<literal>@PermissionCheck</literal>, for example:"
msgstr ""
"下のように、独自のセキュリティアノテーションを作る場合には、単に"
"<literal>@PermissionCheck</literal>とアノテートするだけです。"

#. Tag: programlisting
#: Security.xml:2654
#, no-c-format
msgid ""
"<![CDATA[@Target({METHOD, PARAMETER})\n"
"@Documented\n"
"@Retention(RUNTIME)\n"
"@Inherited\n"
"@PermissionCheck\n"
"public @interface Promote {\n"
"   Class value() default void.class;\n"
"}]]>"
msgstr ""
"<![CDATA[@Target({METHOD, PARAMETER})\n"
"@Documented\n"
"@Retention(RUNTIME)\n"
"@Inherited\n"
"@PermissionCheck\n"
"public @interface Promote {\n"
"   Class value() default void.class;\n"
"}]]>"

#. Tag: para
#: Security.xml:2656
#, no-c-format
msgid ""
"If you wish to override the default permisison action name (which is the "
"lower case version of the annotation name) with another value, you can "
"specify it within the <literal>@PermissionCheck</literal> annotation:"
msgstr ""
"もしデフォルトのアクセス権アクション名（アノテーション名の小文字版）を他の値"
"で上書きする必要があれば、<literal>@PermissionCheck</literal>アノテーション内"
"にその値を指定することができます。"

#. Tag: programlisting
#: Security.xml:2661
#, no-c-format
msgid "<![CDATA[@PermissionCheck(\"upgrade\")]]>"
msgstr "<![CDATA[@PermissionCheck(\"upgrade\")]]>"

#. Tag: title
#: Security.xml:2666
#, no-c-format
msgid "Typesafe Role Annotations"
msgstr "タイプセーフなロールのアノテーション"

#. Tag: para
#: Security.xml:2668
#, no-c-format
msgid ""
"In addition to supporting typesafe permission annotation, Seam Security also "
"provides typesafe role annotations that allow you to restrict access to "
"component methods based on the role memberships of the currently "
"authenticated user. Seam provides one such annotation out of the box, "
"<literal>org.jboss.seam.annotations.security.Admin</literal>, used to "
"restrict access to a method to users that are a member of the "
"<literal>admin</literal> role (so long as your own application supports such "
"a role). To create your own role annotations, simply meta-annotate them with "
"<literal>org.jboss.seam.annotations.security.RoleCheck</literal>, like in "
"the following example:"
msgstr ""
"タイプセーフなパーミッションのアノテーションをサポートするのに加えて、Seamセ"
"キュリティはタイプセーフなロールのアノテーションを提供し、認証されているユー"
"ザーがどのロールのメンバーに属しているかに基づいてコンポーネントのメソッドへ"
"のアクセスを制限する事を可能にしています。 Seamはこのようなアノテーションとし"
"て、<literal>admin</literal>ロール（アプリケーションにこのロールが設定されて"
"いれば）のメンバーに属しているユーザーのみにアクセスを制限する<literal>org."
"jboss.seam.annotations.security.Admin</literal>を提供しています。 独自のロー"
"ルのアノテーションを作成するためには、下の例のように<literal>org.jboss.seam."
"annotations.security.RoleCheck</literal>でメタアノテートします。"

#. Tag: programlisting
#: Security.xml:2677
#, no-c-format
msgid ""
"<![CDATA[@Target({METHOD})\n"
"@Documented\n"
"@Retention(RUNTIME)\n"
"@Inherited\n"
"@RoleCheck\n"
"public @interface User { \n"
"}]]>"
msgstr ""
"<![CDATA[@Target({METHOD})\n"
"@Documented\n"
"@Retention(RUNTIME)\n"
"@Inherited\n"
"@RoleCheck\n"
"public @interface User { \n"
"}]]>"

#. Tag: para
#: Security.xml:2679
#, no-c-format
msgid ""
"Any methods subsequently annotated with the <literal>@User</literal> "
"annotation as shown in the above example will be automatically intercepted "
"and the user checked for the membership of the corresponding role name "
"(which is the lower case version of the annotation name, in this case "
"<literal>user</literal>)."
msgstr ""
"上の例に示されているような<literal>@User</literal>アノテーションを持つメソッ"
"ドは、呼ばれる度に自動的にインタセプトされ対応するロール名（アノテーション名"
"を小文字に書き換えた名前ーこの場合は<literal>user</literal>）のメンバーにユー"
"ザーが含まれるかチェックされます。"

#. Tag: title
#: Security.xml:2688
#, no-c-format
msgid "The Permission Authorization Model"
msgstr "パーミッション許可モデル"

#. Tag: para
#: Security.xml:2690
#, no-c-format
msgid ""
"Seam Security provides an extensible framework for resolving application "
"permissions. The following class diagram shows an overview of the main "
"components of the permission framework:"
msgstr ""
"Seamセキュリティはアプリケーションに対するパーミッションの決定に対して拡張可"
"能なフレームワークを提供します。 下のクラスダイアグラム図にはSeamの提供する"
"パーミッションフレームワークの主要コンポーネントについて示しています。"

#. Tag: para
#: Security.xml:2704
#, no-c-format
msgid ""
"The relevant classes are explained in more detail in the following sections."
msgstr "関連するクラスについての詳細を以下のセクションに示します"

#. Tag: title
#: Security.xml:2709
#, no-c-format
msgid "PermissionResolver"
msgstr "パーミッションリゾルバー"

#. Tag: para
#: Security.xml:2711
#, no-c-format
msgid ""
"This is actually an interface, which provides methods for resolving "
"individual object permissions. Seam provides the following built-in "
"<literal>PermissionResolver</literal> implementations, which are described "
"in more detail later in the chapter:"
msgstr ""
"実際には、これは個々のオブジェクトのアクセス権を決定するメソッドを提供するイ"
"ンタフェースです。 Seamは以下の<literal>PermissionResolver</literal>を内蔵し"
"ています。 それぞれの詳細はこの章の後半で説明します。"

#. Tag: para
#: Security.xml:2719
#, no-c-format
msgid ""
"<literal>RuleBasedPermissionResolver</literal> - This permission resolver "
"uses Drools to resolve rule-based permission checks."
msgstr ""
"<literal>RuleBasedPermissionResolver</literal> - このパーミッションリゾルバー"
"はDroolsを使ってルールベースのパーミッションチェックを行います"

#. Tag: para
#: Security.xml:2723
#, no-c-format
msgid ""
"<literal>PersistentPermissionResolver</literal> - This permission resolver "
"stores object permissions in a persistent store, such as a relational "
"database."
msgstr ""
"<literal>PersistentPermissionResolver</literal> - このパーミッションリゾル"
"バーはデータベース等にパーミッションオブジェクトを保持します。"

#. Tag: title
#: Security.xml:2729
#, no-c-format
msgid "Writing your own PermissionResolver"
msgstr "独自のパーミッションリゾルバーの記述"

#. Tag: para
#: Security.xml:2731
#, no-c-format
msgid ""
"It is very simple to implement your own permission resolver. The "
"<literal>PermissionResolver</literal> interface defines only two methods "
"that must be implemented, as shown by the following table. By deploying your "
"own <literal>PermissionResolver</literal> implementation in your Seam "
"project, it will be automatically scanned during deployment and registered "
"with the default <literal>ResolverChain</literal>."
msgstr ""
"独自のパーミッションリゾルバを作成するためには、下の表にある"
"<literal>PermissionResolver</literal>インタフェースに定義されている二つのメ"
"ソッドを実装します。 独自の<literal>PermissionResolver</literal>実装をSeamプ"
"ロジェクトにデプロイする事により、プロジェクトがデプロイされる時（立ち上がり"
"時）に自動的にスキャンされ<literal>ResolverChain</literal>に組み込まれます。"

#. Tag: title
#: Security.xml:2739
#, no-c-format
msgid "PermissionResolver interface"
msgstr "パーミッションリゾルバーインタフェース"

#. Tag: para
#: Security.xml:2750 Security.xml:3174 Security.xml:3795
#, no-c-format
msgid "Return type"
msgstr "戻り値の型"

#. Tag: literal
#: Security.xml:2771
#, no-c-format
msgid "hasPermission(Object target, String action)"
msgstr "hasPermission(Object target, String action)"

#. Tag: para
#: Security.xml:2775
#, no-c-format
msgid ""
"This method must resolve whether the currently authenticated user (obtained "
"via a call to <literal>Identity.getPrincipal()</literal>) has the permission "
"specified by the <literal>target</literal> and <literal>action</literal> "
"parameters. It should return <literal>true</literal> if the user has the "
"permission, or <literal>false</literal> if they don't."
msgstr ""
"このメソッドは<literal>Identity.getPrincipal()</literal>を呼ぶ事により得られ"
"る現在の認証されたユーザーが、パラメータで渡された<literal>target</literal>と"
"<literal>action</literal>に対してパーミッションを有するか否かを解決し、パー"
"ミッションを有すればtrueを、無ければfalseを返します。"

#. Tag: literal
#: Security.xml:2787
#, no-c-format
msgid "void"
msgstr "void"

#. Tag: literal
#: Security.xml:2792
#, no-c-format
msgid "filterSetByAction(Set&lt;Object&gt; targets, String action)"
msgstr "filterSetByAction(Set&lt;Object&gt; targets, String action)"

#. Tag: para
#: Security.xml:2796
#, fuzzy, no-c-format
msgid ""
"This method should remove any objects from the specified set, that would "
"return <literal>true</literal> if passed to the <literal>hasPermission()</"
"literal> method with the same <literal>action</literal> parameter value."
msgstr ""
"このメソッドは特定のセットから任意のオブジェクトを削除し、もし"
"<literal>hasPermission()</literal>メソッドに同様の<literal>action</literal>を"
"パラメータ値として渡した場合には、falseを返します。 "

#. Tag: para
#: Security.xml:2809
#, no-c-format
msgid ""
"As they are cached in the user's session, any custom "
"<literal>PermissionResolver</literal> implementations must adhere to a "
"couple of restrictions. Firstly, they may not contain any state that is "
"finer-grained than session scope (and the scope of the component itself "
"should either be application or session). Secondly, they must not use "
"dependency injection as they may be accessed from multiple threads "
"simultaneously. In fact, for performance reasons it is recommended that they "
"are annotated with <literal>@BypassInterceptors</literal> to bypass Seam's "
"interceptor stack altogether."
msgstr ""

#. Tag: title
#: Security.xml:2824
#, no-c-format
msgid "ResolverChain"
msgstr "リゾルバーチェーン"

#. Tag: para
#: Security.xml:2826
#, no-c-format
msgid ""
"A <literal>ResolverChain</literal> contains an ordered list of "
"<literal>PermissionResolver</literal>s, for the purpose of resolving object "
"permissions for a particular object class or permission target."
msgstr ""
"<literal>ResolverChain</literal>は<literal>PermissionResolver</literal>sを順"
"番に並べたリストを持っており、このリストに従い、特定のオブジェクトクラス、あ"
"るいはパーミッション対象についてのパーミッションを解決します。"

#. Tag: para
#: Security.xml:2831
#, no-c-format
msgid ""
"The default <literal>ResolverChain</literal> consists of all permission "
"resolvers discovered during application deployment. The <literal>org.jboss."
"seam.security.defaultResolverChainCreated</literal> event is raised (and the "
"<literal>ResolverChain</literal> instance passed as an event parameter) when "
"the default <literal>ResolverChain</literal> is created. This allows "
"additional resolvers that for some reason were not discovered during "
"deployment to be added, or for resolvers that are in the chain to be re-"
"ordered or removed."
msgstr ""

#. Tag: para
#: Security.xml:2840
#, no-c-format
msgid ""
"The following sequence diagram shows the interaction between the components "
"of the permission framework during a permission check (explanation follows). "
"A permission check can originate from a number of possible sources, for "
"example - the security interceptor, the <literal>s:hasPermission</literal> "
"EL function, or via an API call to <literal>Identity.checkPermission</"
"literal>:"
msgstr ""
"下のシークエンス図にパーミッションチェック時のパーミッションフレームワーク内"
"のコンポーネント相互の作用を示します。 パーミッションチェックは、例えば、セ"
"キュリティインタセプタ、EL式<literal>s:hasPermission</literal>、あるいは"
"API<literal>Identity.checkPermission</literal>を呼び出す等、複数の方法により"
"呼び出されます。"

#. Tag: para
#: Security.xml:2858
#, no-c-format
msgid ""
"1. A permission check is initiated somewhere (either in code or via an EL "
"expression) resulting in a call to <literal>Identity.hasPermission()</"
"literal>."
msgstr ""
"1 パーミッションチェックはコードあるいはEL式評価により<literal>Identity."
"hasPermission()</literal>が呼び出されることにより実行されます。"

#. Tag: para
#: Security.xml:2864
#, no-c-format
msgid ""
"1.1. <literal>Identity</literal> invokes <literal>PermissionMapper."
"resolvePermission()</literal>, passing in the permission to be resolved."
msgstr ""
"1.1. <literal>Identity</literal>は解決対象のパーミッションを"
"<literal>PermissionMapper.resolvePermission()</literal>を渡して呼び出します。"

#. Tag: para
#: Security.xml:2871
#, no-c-format
msgid ""
"1.1.1. <literal>PermissionMapper</literal> maintains a <literal>Map</"
"literal> of <literal>ResolverChain</literal> instances, keyed by class. It "
"uses this map to locate the correct <literal>ResolverChain</literal> for the "
"permission's target object. Once it has the correct <literal>ResolverChain</"
"literal>, it retrieves the list of <literal>PermissionResolver</literal>s it "
"contains via a call to <literal>ResolverChain.getResolvers()</literal>."
msgstr ""
"1.1.1. <literal>PermissionMapper</literal>はクラスによりキー付けされた"
"<literal>ResolverChain</literal>インスタンスの<literal>Map</literal>を維持し"
"ており、パーミッションの対象オブジェクトに対応して適切な"
"<literal>ResolverChain</literal>を選択するように管理しています。  適切な"
"<literal>ResolverChain</literal>を見つければ、<literal>ResolverChain."
"getResolvers()</literal>を呼び出し、管理している<literal>PermissionResolver</"
"literal>sを読み込みます。"

#. Tag: para
#: Security.xml:2881
#, no-c-format
msgid ""
"1.1.2. For each <literal>PermissionResolver</literal> in the "
"<literal>ResolverChain</literal>, the <literal>PermissionMapper</literal> "
"invokes its <literal>hasPermission()</literal> method, passing in the "
"permission instance to be checked. If any of the "
"<literal>PermissionResolver</literal>s return <literal>true</literal>, then "
"the permission check has succeeded and the <literal>PermissionMapper</"
"literal> also returns <literal>true</literal> to <literal>Identity</"
"literal>. If none of the <literal>PermissionResolver</literal>s return true, "
"then the permission check has failed."
msgstr ""
"1.1.2. <literal>ResolverChain</literal>中の個々の"
"<literal>PermissionResolver</literal>について<literal>PermissionMapper</"
"literal>はパーミッションチェックの対象をパラメータとして渡して"
"<literal>hasPermission()</literal>メソッドを呼び出します。 いずれかの"
"<literal>PermissionResolver</literal>s が<literal>true</literal>を返せば、"
"パーミッションチェックが成功したと見なし<literal>PermissionMapper</literal>が"
"<literal>Identity</literal>に対して<literal>true</literal>を返します。 いずれ"
"の<literal>PermissionResolver</literal>sも<literal>true</literal>を返さなけれ"
"ば、 パーミッションチェックは失敗したことになります。"

#. Tag: title
#: Security.xml:2897
#, no-c-format
msgid "RuleBasedPermissionResolver"
msgstr "ルールベースのパーミッションリゾルバー"

#. Tag: para
#: Security.xml:2899
#, no-c-format
msgid ""
"One of the built-in permission resolvers provided by Seam, "
"<literal>RuleBasedPermissionResolver</literal> allows permissions to be "
"evaluated based on a set of Drools (JBoss Rules) security rules. A couple of "
"the advantages of using a rule engine are 1) a centralized location for the "
"business logic that is used to evaluate user permissions, and 2) speed - "
"Drools uses very efficient algorithms for evaluating large numbers of "
"complex rules involving multiple conditions."
msgstr ""
"Seamに内蔵されているパーミッションリゾルバーの一つ"
"<literal>RuleBasedPermissionResolver</literal>は、Drools(JBoss Rules)によるセ"
"キュリティルールに基づいたパーミッションの評価を受け付けます。 ルールエンジン"
"を使う事の利点は； 1）ユーザーパーミッションの評価に使用されるビジネスロジッ"
"クを一か所にまとめることができる 2）スピードーDroolは効率の良いアルゴリズムを"
"使用し、多くの条件の元に多くの複雑なルールを評価することが可能になっていま"
"す。"

#. Tag: title
#: Security.xml:2908
#, no-c-format
msgid "Requirements"
msgstr "要求条件"

#. Tag: para
#: Security.xml:2910
#, no-c-format
msgid ""
"If using the rule-based permission features provided by Seam Security, the "
"following jar files are required by Drools to be distributed with your "
"project:"
msgstr ""
"Seamセキュリティの提供するルールベースのアクセス権を使用する場合には、Droolに"
"必要な下記のjarファイルをディストリビューション含める必要があります。"

#. Tag: para
#: Security.xml:2917
#, fuzzy, no-c-format
msgid "knowledge-api.jar"
msgstr "drools-compiler.jar"

#. Tag: para
#: Security.xml:2920
#, no-c-format
msgid "drools-compiler.jar"
msgstr "drools-compiler.jar"

#. Tag: para
#: Security.xml:2923
#, no-c-format
msgid "drools-core.jar"
msgstr "drools-core.jar"

#. Tag: para
#: Security.xml:2926
#, fuzzy, no-c-format
msgid "drools-decisiontables.jar"
msgstr "drools-core.jar"

#. Tag: para
#: Security.xml:2929
#, fuzzy, no-c-format
msgid "drools-templates.jar"
msgstr "drools-compiler.jar"

#. Tag: para
#: Security.xml:2932
#, no-c-format
msgid "janino.jar"
msgstr "janino.jar"

#. Tag: para
#: Security.xml:2935
#, no-c-format
msgid "antlr-runtime.jar"
msgstr "antlr-runtime.jar"

#. Tag: para
#: Security.xml:2938
#, fuzzy, no-c-format
msgid "mvel2.jar"
msgstr "mvel14.jar"

#. Tag: title
#: Security.xml:2945 Security.xml:3137
#, no-c-format
msgid "Configuration"
msgstr "設定"

#. Tag: para
#: Security.xml:2947
#, no-c-format
msgid ""
"The configuration for <literal>RuleBasedPermissionResolver</literal> "
"requires that a Drools rule base is first configured in <literal>components."
"xml</literal>. By default, it expects that the rule base is named "
"<literal>securityRules</literal>, as per the following example:"
msgstr ""
"<literal>RuleBasedPermissionResolver</literal>を設定するためには、"
"<literal>components.xml</literal>にDroolのルールベースが設定されている必要が"
"あります。 このルールベースは下の例のように、デフォルトで"
"<literal>securityRules</literal>と命名されていることを仮定しています。"

#. Tag: programlisting
#: Security.xml:2953
#, fuzzy, no-c-format
msgid ""
"<![CDATA[<components xmlns=\"http://jboss.org/schema/seam/components\"\n"
"              xmlns:core=\"http://jboss.org/schema/seam/core\"\n"
"              xmlns:security=\"http://jboss.org/schema/seam/security\"\n"
"              xmlns:drools=\"http://jboss.org/schema/seam/drools\"\n"
"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"              xsi:schemaLocation=\n"
"                  \"http://jboss.org/schema/seam/core http://jboss.com/"
"products/seam/core-2.3.xsd\n"
"                   http://jboss.org/schema/seam/components http://jboss."
"com/products/seam/components-2.3.xsd\n"
"                   http://jboss.org/schema/seam/drools http://jboss.com/"
"products/seam/drools-2.3.xsd\n"
"                   http://jboss.org/schema/seam/security http://jboss.com/"
"products/seam/security-2.3.xsd\">\n"
"  \n"
"     <drools:rule-base name=\"securityRules\">\n"
"         <drools:rule-files>\n"
"             <value>/META-INF/security.drl</value>\n"
"         </drools:rule-files>\n"
"     </drools:rule-base>\n"
"  \n"
"  </components>]]>"
msgstr ""
"<![CDATA[<components xmlns=\"http://jboss.org/schema/seam/components\"\n"
"              xmlns:core=\"http://jboss.org/schema/seam/core\"\n"
"              xmlns:security=\"http://jboss.org/schema/seam/security\"\n"
"              xmlns:drools=\"http://jboss.org/schema/seam/drools\"\n"
"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"              xsi:schemaLocation=\n"
"                  \"http://jboss.org/schema/seam/core http://jboss.com/"
"products/seam/core-2.1.xsd\n"
"                   http://jboss.org/schema/seam/components http://jboss."
"com/products/seam/components-2.1.xsd\n"
"                   http://jboss.org/schema/seam/drools http://jboss.com/"
"products/seam/drools-2.1.xsd\"\n"
"                   http://jboss.org/schema/seam/security http://jboss.com/"
"products/seam/security-2.1.xsd\">\n"
"  \n"
"     <drools:rule-base name=\"securityRules\">\n"
"         <drools:rule-files>\n"
"             <value>/META-INF/security.drl</value>\n"
"         </drools:rule-files>\n"
"     </drools:rule-base>\n"
"  \n"
"  </components>]]>"

#. Tag: para
#: Security.xml:2955
#, no-c-format
msgid ""
"The default rule base name can be overridden by specifying the "
"<literal>security-rules</literal> property for "
"<literal>RuleBasedPermissionResolver</literal>:"
msgstr ""
"デフォルトのルールベースの名前は<literal>RuleBasedPermissionResolver</"
"literal>の<literal>security-rules</literal>属性で上書きする事ができます。"

#. Tag: programlisting
#: Security.xml:2960
#, no-c-format
msgid ""
"<![CDATA[\n"
"  <security:rule-based-permission-resolver security-rules=\"#"
"{prodSecurityRules}\"/>]]>"
msgstr ""
"<![CDATA[\n"
"  <security:rule-based-permission-resolver security-rules=\"#"
"{prodSecurityRules}\"/>]]>"

#. Tag: para
#: Security.xml:2962
#, no-c-format
msgid ""
"Once the <literal>RuleBase</literal> component is configured, it's time to "
"write the security rules."
msgstr ""
"<literal>RuleBase</literal>コンポーネントを設定したら、次にセキュリティルール"
"の記述をします。"

#. Tag: title
#: Security.xml:2968
#, no-c-format
msgid "Writing Security Rules"
msgstr "セキュリティルールの記述"

#. Tag: para
#: Security.xml:2970
#, no-c-format
msgid ""
"The first step to writing security rules is to create a new rule file in the "
"<literal>/META-INF</literal> directory of your application's jar file. "
"Usually this file would be named something like <literal>security.drl</"
"literal>, however you can name it whatever you like as long as it is "
"configured correspondingly in <literal>components.xml</literal>."
msgstr ""
"セキュリティルールを作成するためには、まずアプリケーションのjarファイルの"
"<literal>/META-INF</literal>ディレクトリ下に新規のルールファイルを作ります。 "
"通常このファイルは<literal>security.drl</literal>のように命名されますが、"
"<literal>components.xml</literal>に別途指定しておけば、どのようにでも命名する"
"事ができます。"

#. Tag: para
#: Security.xml:2977
#, no-c-format
msgid ""
"So what should the security rules file contain? At this stage it might be a "
"good idea to at least skim through the Drools documentation, however to get "
"started here's an extremely simple example:"
msgstr ""
"セキュリティルールの内容は？ この段階ではDroolsのドキュメントから適当に拝借し"
"てくるのが良いかもしれませんが、ここでは非常に単純な例から始めてみる事にしま"
"しょう"

#. Tag: programlisting
#: Security.xml:2982
#, no-c-format
msgid ""
"<![CDATA[package MyApplicationPermissions;\n"
"  \n"
"  import org.jboss.seam.security.permission.PermissionCheck;\n"
"  import org.jboss.seam.security.Role;\n"
"  \n"
"  rule CanUserDeleteCustomers\n"
"  when\n"
"    c: PermissionCheck(target == \"customer\", action == \"delete\")\n"
"    Role(name == \"admin\")\n"
"  then\n"
"    c.grant();\n"
"  end]]>"
msgstr ""
"<![CDATA[package MyApplicationPermissions;\n"
"  \n"
"  import org.jboss.seam.security.permission.PermissionCheck;\n"
"  import org.jboss.seam.security.Role;\n"
"  \n"
"  rule CanUserDeleteCustomers\n"
"  when\n"
"    c: PermissionCheck(target == \"customer\", action == \"delete\")\n"
"    Role(name == \"admin\")\n"
"  then\n"
"    c.grant();\n"
"  end]]>"

#. Tag: para
#: Security.xml:2984
#, no-c-format
msgid ""
"Let's break this down step by step. The first thing we see is the package "
"declaration. A package in Drools is essentially a collection of rules. The "
"package name can be anything you want - it doesn't relate to anything else "
"outside the scope of the rule base."
msgstr ""
"では、一つづつ見てゆきましょう。 最初はパッケージ宣言です。 Droolのパッケージ"
"はルールの集まりで、ルールベースの範囲外とは何ら関わりが無いので、パッケージ"
"の名前は任意で構いません。"

#. Tag: para
#: Security.xml:2990
#, no-c-format
msgid ""
"The next thing we can notice is a couple of import statements for the "
"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
"These imports inform the rules engine that we'll be referencing these "
"classes within our rules."
msgstr ""
"つぎに、<literal>PermissionCheck</literal>クラスと<literal>Role</literal>クラ"
"スに関するいくつかのインポート文があります。 これらのインポート文は、これから"
"使うルールでこれらのクラスを参照する事をルールエンジンに対して伝えています。"

#. Tag: para
#: Security.xml:2996
#, no-c-format
msgid ""
"Finally we have the code for the rule. Each rule within a package should be "
"given a unique name (usually describing the purpose of the rule). In this "
"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
"be used to check whether a user is allowed to delete a customer record."
msgstr ""
"そして、ルールの記述コード。それぞれのルールは、ルールごとにユニークな名前が"
"与えられている必要があります (通常は、ルールの目的をルールの名前にします。) "
"この例の場合、<literal>CanUserDeleteCustomers</literal>がルールの名前で、読ん"
"で字の如く、顧客レコードの削除をできるかできないかのチェックに使用します。"

#. Tag: para
#: Security.xml:3002
#, no-c-format
msgid ""
"Looking at the body of the rule definition we can notice two distinct "
"sections. Rules have what is known as a left hand side (LHS) and a right "
"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
"a list of conditions which must be satisfied for the rule to fire. The LHS "
"is represented by the <literal>when</literal> section. The RHS is the "
"consequence, or action section of the rule that will only be fired if all of "
"the conditions in the LHS are met. The RHS is represented by the "
"<literal>then</literal> section. The end of the rule is denoted by the "
"<literal>end</literal> line."
msgstr ""
"ルールの記述が二つの部分から成っている事がわかります。ルールは左部分 (LHS) と"
"右部分 (RHS) として知られている部分から成り立っています。LHSはルールの条件部"
"分 (即ち、ルールが実行されるために満たさなければならない条件のリスト) を規定"
"しています。 LHSは<literal>when</literal>で表されるセクションにあり、また、"
"RHSはLHSが満たされた場合に実行されるアクション、あるいは結果を記述していま"
"す。 RHSは<literal>then</literal>以降の部分に記述します。 また、ルールの最後"
"は<literal>end</literal>で終了します。"

#. Tag: para
#: Security.xml:3011
#, no-c-format
msgid ""
"If we look at the LHS of the rule, we see two conditions listed there. Let's "
"examine the first condition:"
msgstr ""
"ルールについてLHSを見ると、二つの条件がある事が分かります。 まず、最初の条件"
"を見てみましょう。"

#. Tag: programlisting
#: Security.xml:3015
#, no-c-format
msgid ""
"<![CDATA[c: PermissionCheck(target == \"customer\", action == \"delete\")]]>"
msgstr ""
"<![CDATA[c: PermissionCheck(target == \"customer\", action == \"delete\")]]>"

#. Tag: para
#: Security.xml:3017
#, no-c-format
msgid ""
"In plain english, this condition is stating that there must exist a "
"<literal>PermissionCheck</literal> object with a <literal>target</literal> "
"property equal to \"customer\", and an <literal>action</literal> property "
"equal to \"delete\" within the working memory."
msgstr ""
"この条件は、簡単な英語で「ワーキングメモリ中に、<literal>target</literal>属性"
"として\"customer\"を持ち、<literal>target</literal>属性として\"delete\"を持つ"
"<literal>PermissionCheck</literal>オブジェクトが存在しなければならない」と示"
"しています。"

#. Tag: para
#: Security.xml:3023
#, no-c-format
msgid ""
"So what is the working memory? Also known as a \"stateful session\" in "
"Drools terminology, the working memory is a session-scoped object that "
"contains the contextual information that is required by the rules engine to "
"make a decision about a permission check. Each time the "
"<literal>hasPermission()</literal> method is called, a temporary "
"<literal>PermissionCheck</literal> object, or <emphasis>Fact</emphasis>, is "
"inserted into the working memory. This <literal>PermissionCheck</literal> "
"corresponds exactly to the permission that is being checked, so for example "
"if you call <literal>hasPermission(\"account\", \"create\")</literal> then a "
"<literal>PermissionCheck</literal> object with a <literal>target</literal> "
"equal to \"account\" and <literal>action</literal> equal to \"create\" will "
"be inserted into the working memory for the duration of the permission check."
msgstr ""
"ワーキングメモリって何？ Droolｓの技術用語で、ルールエンジンがパーミッション"
"チェックをするために必要なコンテキスト情報を保持しているセッションスコープの"
"オブジェクトの事を「ワーキングメモリ」と呼びます。 <literal>hasPermission()</"
"literal>メソッドが呼ばれる都度、仮の<literal>PermissionCheck</literal>オブ"
"ジェクト、あるいは<emphasis>ファクト(Fact)</emphasis>がワーキングメモリに挿入"
"されます。 この<literal>PermissionCheck</literal>は今からチェックされるパー"
"ミッションに対応しており、例えば<literal>hasPermission(\"account\", \"create"
"\")</literal>を呼び出すと、<literal>target</literal>属性が \"account\"で"
"<literal>action</literal>属性が\"create\"である<literal>PermissionCheck</"
"literal>オブジェクトがワーキングメモリに挿入され、パーミッションチェックが終"
"了するまで存在します。"

#. Tag: para
#: Security.xml:3035
#, no-c-format
msgid ""
"Besides the <literal>PermissionCheck</literal> facts, there is also a "
"<literal>org.jboss.seam.security.Role</literal> fact for each of the roles "
"that the authenticated user is a member of. These <literal>Role</literal> "
"facts are synchronized with the user's authenticated roles at the beginning "
"of every permission check. As a consequence, any <literal>Role</literal> "
"object that is inserted into the working memory during the course of a "
"permission check will be removed before the next permission check occurs, if "
"the authenticated user is not actually a member of that role. Besides the "
"<literal>PermissionCheck</literal> and <literal>Role</literal> facts, the "
"working memory also contains the <literal>java.security.Principal</literal> "
"object that was created as a result of the authentication process."
msgstr ""
"<literal>PermissionCheck</literal>ファクトの他に、認証されたユーザーが所属す"
"るロールの<literal>org.jboss.seam.security.Role</literal>ファクトがありま"
"す。 これらの <literal>Role</literal>ファクトはパーミッションチェックの開始の"
"都度ユーザーの認証されたロールと同期されます。 従って、パーミッションチェック"
"に使用されたワーキングメモリ中の<literal>Role</literal>オブジェクトは、もし認"
"証されたユーザーがそのロールに所属していなければ、次回のパーミッションチェッ"
"クの前に削除されます。 ワーキングメモリには<literal>PermissionCheck</literal>"
"と <literal>Role</literal>ファクトの他に認証の過程で作成された<literal>java."
"security.Principal</literal>オブジェクトが保持されています。"

#. Tag: para
#: Security.xml:3046
#, no-c-format
msgid ""
"It is also possible to insert additional long-lived facts into the working "
"memory by calling <literal>RuleBasedPermissionResolver.instance()."
"getSecurityContext().insert()</literal>, passing the object as a parameter. "
"The exception to this is <literal>Role</literal> objects, which as already "
"discussed are synchronized at the start of each permission check."
msgstr ""
"これ以外にパラメータとしてオブジェクトを渡し"
"<literal>RuleBasedPermissionResolver.instance().getSecurityContext().insert()"
"</literal>を呼び出すことにより、追加でワーキングメモリ中に長期に生存するファ"
"クトを挿入する事ができます。 例外として、先に説明したように<literal>Role</"
"literal>オブジェクトはパーミッションチェックの都度同期されるために、はワーキ"
"ングメモリ中に長期に生存するファクトとする事はできません。"

#. Tag: para
#: Security.xml:3053
#, no-c-format
msgid ""
"Getting back to our simple example, we can also notice that the first line "
"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
"binding, and is used to refer back to the object that is matched by the "
"condition (in this case, the <literal>PermissionCheck</literal>). Moving on "
"to the second line of our LHS, we see this:"
msgstr ""
"先の例に戻り、LHSが<literal>c:</literal>で始まっていることに気がつくと思いま"
"す。 これは、変数結合を表しており、条件のマッチングに利用されるオブジェクトへ"
"の参照を意味しています（この例の場合は<literal>PermissionCheck</literal>）。 "
"LHSの2行目には下の記述があります。"

#. Tag: programlisting
#: Security.xml:3060
#, no-c-format
msgid "<![CDATA[Role(name == \"admin\")]]>"
msgstr "<![CDATA[Role(name == \"admin\")]]>"

#. Tag: para
#: Security.xml:3062
#, no-c-format
msgid ""
"This condition simply states that there must be a <literal>Role</literal> "
"object with a <literal>name</literal> of \"admin\" within the working "
"memory. As already mentioned, user roles are inserted into the working "
"memory at the beginning of each permission check. So, putting both "
"conditions together, this rule is essentially saying \"I will fire if you "
"are checking for the <literal>customer:delete</literal> permission and the "
"user is a member of the <literal>admin</literal> role\"."
msgstr ""
"この条件はワーキングメモリ中に\"admin\"という<literal>name</literal>の"
"<literal>Role</literal>オブジェクトが存在しなければならない事を示していま"
"す。 先述したように、ユーザーのロールはパーミッションチェックの開始の都度ワー"
"キングメモリに挿入されますので、この条件は結果として「<literal>admin</"
"literal>ロールに所属するユーザーで<literal>customer:delete</literal>の許可を"
"求めているのであれば、これを認めます」という事を示しています。"

#. Tag: para
#: Security.xml:3070
#, no-c-format
msgid ""
"So what is the consequence of the rule firing? Let's take a look at the RHS "
"of the rule:"
msgstr ""
"ルールが適用されると、何が起こるのでしょうか？ 次にルールのRHS側を見てみま"
"しょう。"

#. Tag: programlisting
#: Security.xml:3074
#, no-c-format
msgid "<![CDATA[c.grant()]]>"
msgstr "<![CDATA[c.grant()]]>"

#. Tag: para
#: Security.xml:3076
#, no-c-format
msgid ""
"The RHS consists of Java code, and in this case is invoking the "
"<literal>grant()</literal> method of the <literal>c</literal> object, which "
"as already mentioned is a variable binding for the <literal>PermissionCheck</"
"literal> object. Besides the <literal>name</literal> and <literal>action</"
"literal> properties of the <literal>PermissionCheck</literal> object, there "
"is also a <literal>granted</literal> property which is initially set to "
"<literal>false</literal>. Calling <literal>grant()</literal> on a "
"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
"property to <literal>true</literal>, which means that the permission check "
"was successful, allowing the user to carry out whatever action the "
"permission check was intended for."
msgstr ""
"RHSはJavaコードから成っており、この例の場合は<literal>c</literal>というオブ"
"ジェクト (既に述べたように、<literal>PermissionCheck</literal>オブジェクトへ"
"の変数結合) の<literal>grant()</literal>メソッドが起動されます。"
"<literal>PermissionCheck</literal>オブジェクトの<literal>name</literal>と"
"<literal>action</literal>プロパティ以外に<literal>false</literal>に初期設定さ"
"れた<literal>granted</literal>プロパティが存在します。"
"<literal>PermissionCheck</literal>の<literal>grant()</literal>を呼ぶことによ"
"り、<literal>granted</literal>プロパティは<literal>true</literal>にセットさ"
"れ、パーミッションのチェックが成功し、ユーザーはパーミッションで決められたア"
"クションについて実行することができるようになります。"

#. Tag: title
#: Security.xml:3090
#, no-c-format
msgid "Non-String permission targets"
msgstr "非文字列のパーミッションターゲット"

#. Tag: para
#: Security.xml:3092
#, no-c-format
msgid ""
"So far we have only seen permission checks for String-literal permission "
"targets. It is of course also possible to write security rules for "
"permission targets of more complex types. For example, let's say that you "
"wish to write a security rule to allow your users to create blog comments. "
"The following rule demonstrates how this may be expressed, by requiring the "
"target of the permission check to be an instance of <literal>MemberBlog</"
"literal>, and also requiring that the currently authenticated user is a "
"member of the <literal>user</literal> role:"
msgstr ""
"ここまで文字列型のパーミッションターゲットのチェックについて見てきました。 し"
"かし、もっと複雑なパーミッションターゲットのセキュリティルールを記述すること"
"も可能です。 例えば、ユーザーがブログにコメントを作成する事を可能にするセキュ"
"リティルールを記述する場合を考えてみましょう。 これは以下のように、パーミッ"
"ションチェックの対象が<literal>MemberBlog</literal>インスタンスで、現在の認証"
"されたユーザーが<literal>user</literal>ロールのメンバーであることが必要であ"
"る、と表現されます。"

#. Tag: programlisting
#: Security.xml:3101
#, no-c-format
msgid ""
"<![CDATA[rule CanCreateBlogComment\n"
"  no-loop\n"
"  activation-group \"permissions\"\n"
"when\n"
"  blog: MemberBlog()\n"
"  check: PermissionCheck(target == blog, action == \"create\", granted == "
"false)\n"
"  Role(name == \"user\")\n"
"then\n"
"  check.grant();\n"
"end\n"
"]]>"
msgstr ""
"<![CDATA[rule CanCreateBlogComment\n"
"  no-loop\n"
"  activation-group \"permissions\"\n"
"when\n"
"  blog: MemberBlog()\n"
"  check: PermissionCheck(target == blog, action == \"create\", granted == "
"false)\n"
"  Role(name == \"user\")\n"
"then\n"
"  check.grant();\n"
"end\n"
"]]>"

#. Tag: title
#: Security.xml:3106
#, no-c-format
msgid "Wildcard permission checks"
msgstr "ワイルドカードによるパーミッションチェック"

#. Tag: para
#: Security.xml:3108
#, no-c-format
msgid ""
"It is possible to implement a wildcard permission check (which allows all "
"actions for a given permission target), by omitting the <literal>action</"
"literal> constraint for the <literal>PermissionCheck</literal> in your rule, "
"like this:"
msgstr ""
"ワイルドカードを使ってパーミッションチェックを設定することも可能で、これはあ"
"るパーミッションに対してすべての操作を許可します。下のようにルールの"
"<literal>PermissionCheck</literal>の<literal>action</literal>制約を省略するこ"
"とにより、実装できます。"

#. Tag: programlisting
#: Security.xml:3114
#, no-c-format
msgid ""
"<![CDATA[rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
"when\n"
"  c: PermissionCheck(target == \"customer\")\n"
"  Role(name == \"admin\")\n"
"then\n"
"  c.grant();\n"
"end;\n"
"        ]]>"
msgstr ""
"<![CDATA[rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
"when\n"
"  c: PermissionCheck(target == \"customer\")\n"
"  Role(name == \"admin\")\n"
"then\n"
"  c.grant();\n"
"end;\n"
"        ]]>"

#. Tag: para
#: Security.xml:3116
#, no-c-format
msgid ""
"This rule allows users with the <literal>admin</literal> role to perform "
"<emphasis>any</emphasis> action for any <literal>customer</literal> "
"permission check."
msgstr ""
"上記のルールでは、<literal>admin</literal>ロールを持つユーザーは、どの"
"<literal>customer</literal>に対しても、<emphasis>任意の</emphasis>操作が可能"
"なパーミッションチェックになっています。"

#. Tag: title
#: Security.xml:3126
#, no-c-format
msgid "PersistentPermissionResolver"
msgstr "永続的パーミッションリゾルバー"

#. Tag: para
#: Security.xml:3128
#, no-c-format
msgid ""
"Another built-in permission resolver provided by Seam, "
"<literal>PersistentPermissionResolver</literal> allows permissions to be "
"loaded from persistent storage, such as a relational database. This "
"permission resolver provides ACL style instance-based security, allowing for "
"specific object permissions to be assigned to individual users and roles. It "
"also allows for persistent, arbitrarily-named permission targets (not "
"necessarily object/class based) to be assigned in the same way."
msgstr ""
"Seamに内蔵されているパーミッションリゾルバーにはこれ以外に"
"<literal>PersistentPermissionResolver</literal>があり、これはリレーショナル"
"データベースのような永続的保存場所からパーミッションを読み込むことが可能で、"
"ACLスタイルのインスタンスベースのセキュリティを提供しており、個別のユーザーと"
"ロールに対して特定のパーミッションを指定する事ができます。 また、任意の名前の"
"パーミッションターゲットを指定して保存する事が可能です。"

#. Tag: para
#: Security.xml:3139
#, no-c-format
msgid ""
"Before it can be used, <literal>PersistentPermissionResolver</literal> must "
"be configured with a valid <literal>PermissionStore</literal> in "
"<literal>components.xml</literal>. If not configured, it will attempt to use "
"the default permission store, <literal>JpaIdentityStore</literal> (see "
"section further down for details). To use a permission store other than the "
"default, configure the <literal>permission-store</literal> property as "
"follows:"
msgstr ""
"使用するためには<literal>components.xml</literal>に、有効な"
"<literal>PersistentPermissionResolver</literal>を設定した"
"<literal>PermissionStore</literal>を記述する必要があります。 設定していない場"
"合、デフォルトのパーミッションストア<literal>JpaIdentityStore</literal>の使用"
"を試みます。 デフォルト以外のパーミッションストアを使用する場合には"
"<literal>permission-store</literal>属性を下のように記述します。"

#. Tag: programlisting
#: Security.xml:3147
#, no-c-format
msgid ""
"<![CDATA[  <security:persistent-permission-resolver permission-store=\"#"
"{myCustomPermissionStore}\"/>]]>"
msgstr ""
"<![CDATA[  <security:persistent-permission-resolver permission-store=\"#"
"{myCustomPermissionStore}\"/>]]>"

#. Tag: title
#: Security.xml:3152
#, no-c-format
msgid "Permission Stores"
msgstr "パーミッションストアについて"

#. Tag: para
#: Security.xml:3154
#, no-c-format
msgid ""
"A permission store is required for <literal>PersistentPermissionResolver</"
"literal> to connect to the backend storage where permissions are persisted. "
"Seam provides one <literal>PermissionStore</literal> implementation out of "
"the box, <literal>JpaPermissionStore</literal>, which is used to store "
"permissions inside a relational database. It is possible to write your own "
"permission store by implementing the <literal>PermissionStore</literal> "
"interface, which defines the following methods:"
msgstr ""
"<literal>PersistentPermissionResolver</literal>は、パーミッションを保存してい"
"るバックエンドの保存場所との接続のためにパーミッションストアを必要とします。 "
"Seamは標準で一つの<literal>PermissionStore</literal>実装"
"<literal>JpaPermissionStore</literal>を提供しており、リレーショナルデータベー"
"スにパーミッションを保存します。 下記のメソッドを定義している"
"<literal>PermissionStore</literal>インタフェースを実装することにより、独自の"
"パーミッションストアを作成する事も可能です。"

#. Tag: title
#: Security.xml:3164
#, no-c-format
msgid "PermissionStore interface"
msgstr "パーミッションストアのインタフェース"

#. Tag: literal
#: Security.xml:3190 Security.xml:3209 Security.xml:3228 Security.xml:3811
#: Security.xml:3830
#, no-c-format
msgid "List&lt;Permission&gt;"
msgstr "List&lt;Permission&gt;"

#. Tag: literal
#: Security.xml:3195 Security.xml:3835
#, no-c-format
msgid "listPermissions(Object target)"
msgstr "listPermissions(Object target)"

#. Tag: para
#: Security.xml:3199
#, no-c-format
msgid ""
"This method should return a <literal>List</literal> of <literal>Permission</"
"literal> objects representing all the permissions granted for the specified "
"target object."
msgstr ""
"このメソッドは対象のオブジェクトに付与されているすべての権限を表す"
"<literal>Permission</literal>オブジェクトの<literal>List</literal>を返しま"
"す。"

#. Tag: literal
#: Security.xml:3214 Security.xml:3816
#, no-c-format
msgid "listPermissions(Object target, String action)"
msgstr "listPermissions(Object target, String action)"

#. Tag: para
#: Security.xml:3218
#, no-c-format
msgid ""
"This method should return a <literal>List</literal> of <literal>Permission</"
"literal> objects representing all the permissions with the specified action, "
"granted for the specified target object."
msgstr ""
"このメソッドは対象のオブジェクトに付与されている特定のアクションに対するすべ"
"ての権限を表す<literal>Permission</literal>オブジェクトの<literal>List</"
"literal>を返します。"

#. Tag: literal
#: Security.xml:3233
#, no-c-format
msgid "listPermissions(Set&lt;Object&gt; targets, String action)"
msgstr "listPermissions(Set&lt;Object&gt; targets, String action)"

#. Tag: para
#: Security.xml:3237
#, no-c-format
msgid ""
"This method should return a <literal>List</literal> of <literal>Permission</"
"literal> objects representing all the permissions with the specified action, "
"granted for the specified set of target objects."
msgstr ""
"このメソッドは対象の一連のオブジェクトに付与されている特定のアクションに対す"
"るすべての権限を表す<literal>Permission</literal>オブジェクトの"
"<literal>List</literal>を返します"

#. Tag: literal
#: Security.xml:3253
#, no-c-format
msgid "grantPermission(Permission)"
msgstr "grantPermission(Permission)"

#. Tag: para
#: Security.xml:3257
#, no-c-format
msgid ""
"This method should persist the specified <literal>Permission</literal> "
"object to the backend storage, returning true if successful."
msgstr ""
"このメソッドは特定の<literal>Permission</literal>オブジェクトをバックエンドの"
"ストレージに保持し、成功すればtrueを返します。"

#. Tag: literal
#: Security.xml:3272 Security.xml:3873
#, no-c-format
msgid "grantPermissions(List&lt;Permission&gt; permissions)"
msgstr "grantPermissions(List&lt;Permission&gt; permissions)"

#. Tag: para
#: Security.xml:3276
#, no-c-format
msgid ""
"This method should persist all of the <literal>Permission</literal> objects "
"contained in the specified <literal>List</literal>, returning true if "
"successful."
msgstr ""
"このメソッドは指定された <literal>List</literal>にある、すべての"
"<literal>Permission</literal>オブジェクトをバックエンドのストレージに保持し、"
"成功すればtrueを返します。"

#. Tag: literal
#: Security.xml:3291 Security.xml:3892
#, no-c-format
msgid "revokePermission(Permission permission)"
msgstr "revokePermission(Permission permission)"

#. Tag: para
#: Security.xml:3295
#, no-c-format
msgid ""
"This method should remove the specified <literal>Permission</literal> object "
"from persistent storage."
msgstr ""
"このメソッドは指定された<literal>Permission</literal>オブジェクトをストレージ"
"から削除します。"

#. Tag: literal
#: Security.xml:3309 Security.xml:3911
#, no-c-format
msgid "revokePermissions(List&lt;Permission&gt; permissions)"
msgstr "revokePermissions(List&lt;Permission&gt; permissions)"

#. Tag: para
#: Security.xml:3313
#, no-c-format
msgid ""
"This method should remove all of the <literal>Permission</literal> objects "
"in the specified list from persistent storage."
msgstr ""
"このメソッドは指定されたリストにあるすべての<literal>Permission</literal>オブ"
"ジェクトをストレージから削除します。"

#. Tag: literal
#: Security.xml:3323 Security.xml:3925
#, no-c-format
msgid "List&lt;String&gt;"
msgstr "List&lt;String&gt;"

#. Tag: literal
#: Security.xml:3328 Security.xml:3930
#, no-c-format
msgid "listAvailableActions(Object target)"
msgstr "listAvailableActions(Object target)"

#. Tag: para
#: Security.xml:3332
#, no-c-format
msgid ""
"This method should return a list of all the available actions (as Strings) "
"for the class of the specified target object. It is used in conjunction with "
"permission management to build the user interface for granting specific "
"class permissions (see section further down)."
msgstr ""
"このメソッドは指定された対象オブジェクトクラスに対して可能なアクション（文字"
"列型）のリストを返します。 特定のクラスのパーミッションを付与するためのユー"
"ザーインタフェースを作成するためにパーミッション管理と共に使用されます。"

#. Tag: title
#: Security.xml:3346
#, no-c-format
msgid "JpaPermissionStore"
msgstr "JpaPermissionStoreについて"

#. Tag: para
#: Security.xml:3348
#, no-c-format
msgid ""
"This is the default <literal>PermissionStore</literal> implementation (and "
"the only one provided by Seam), which uses a relational database to store "
"permissions. Before it can be used it must be configured with either one or "
"two entity classes for storing user and role permissions. These entity "
"classes must be annotated with a special set of security annotations to "
"configure which properties of the entity correspond to various aspects of "
"the permissions being stored."
msgstr ""
"これはデフォルトの（また、Seamが提供する唯一の）<literal>PermissionStore</"
"literal>の実装で、パーミッションの保存にリレーショナルデータベースを使用して"
"います。 使用するためにはユーザーとロールのパーミッションの保存に係る一つない"
"し二つのエンティティクラスの設定が必要になります。 これらのエンティティクラス"
"は保存されているレコードとエンティティの属性がパーミッションのどれに対応する"
"のかを設定するための特別なセキュリティに関するアノテーションでアノテートされ"
"ている必要があります。"

#. Tag: para
#: Security.xml:3356
#, no-c-format
msgid ""
"If you wish to use the same entity (i.e. a single database table) to store "
"both user and role permissions, then only the <literal>user-permission-"
"class</literal> property is required to be configured. If you wish to use "
"separate tables for storing user and role permissions, then in addition to "
"the <literal>user-permission-class</literal> property you must also "
"configure the <literal>role-permission-class</literal> property."
msgstr ""
"もしユーザーパーミッションとロールパーミッションに同一のエンティティ（一つの"
"DBテーブル）を使うのであれば、<literal>user-permission-class</literal>属性を"
"設定します。 ユーザーパーミッションとロールパーミッションを別々のテーブルに保"
"持するのであれば、<literal>user-permission-class</literal>属性に加えて"
"<literal>role-permission-class</literal>属性を設定する必要があります。"

#. Tag: para
#: Security.xml:3363
#, no-c-format
msgid ""
"For example, to configure a single entity class to store both user and role "
"permissions:"
msgstr ""
"例えば、ユーザーとロールのパーミッションを一つのエンティティクラスに保存する"
"よう設定する場合は次のようになります。"

#. Tag: programlisting
#: Security.xml:3365
#, no-c-format
msgid ""
"<![CDATA[  <security:jpa-permission-store user-permission-class=\"com.acme."
"model.AccountPermission\"/>]]>"
msgstr ""
"<![CDATA[  <security:jpa-permission-store user-permission-class=\"com.acme."
"model.AccountPermission\"/>]]>"

#. Tag: para
#: Security.xml:3367
#, no-c-format
msgid ""
"To configure separate entity classes for storing user and role permissions:"
msgstr ""
"ユーザーパーミッションとロールパーミッションを別のエンティティクラスに保存す"
"る場合の設定は次のようになります。"

#. Tag: programlisting
#: Security.xml:3369
#, no-c-format
msgid ""
"<![CDATA[  <security:jpa-permission-store user-permission-class=\"com.acme."
"model.UserPermission\"\n"
"    role-permission-class=\"com.acme.model.RolePermission\"/>]]>"
msgstr ""
"<![CDATA[  <security:jpa-permission-store user-permission-class=\"com.acme."
"model.UserPermission\"\n"
"    role-permission-class=\"com.acme.model.RolePermission\"/>]]>"

#. Tag: title
#: Security.xml:3372
#, no-c-format
msgid "Permission annotations"
msgstr "パーミッション アノテーション"

#. Tag: para
#: Security.xml:3374
#, no-c-format
msgid ""
"As mentioned, the entity classes that contain the user and role permissions "
"must be configured with a special set of annotations, contained within the "
"<literal>org.jboss.seam.annotations.security.permission</literal> package. "
"The following table lists each of these annotations along with a description "
"of how they are used:"
msgstr ""
"先述のように、ユーザーとロールのパーミッションを保持するエンティティクラスは"
"<literal>org.jboss.seam.annotations.security.permission</literal>パッケージに"
"ある特別なアノテーションを設定されている必要があります。 下の表にこれらのアノ"
"テーションと、その使用方法の説明を示します。"

#. Tag: title
#: Security.xml:3381
#, no-c-format
msgid "Entity Permission annotations"
msgstr "エンティティ パーミッション アノテーション"

#. Tag: para
#: Security.xml:3394 Security.xml:3557
#, no-c-format
msgid "Target"
msgstr "ターゲット"

#. Tag: literal
#: Security.xml:3407
#, no-c-format
msgid "@PermissionTarget"
msgstr "@PermissionTarget"

#. Tag: literal
#: Security.xml:3412 Security.xml:3431 Security.xml:3450 Security.xml:3469
#: Security.xml:3488
#, no-c-format
msgid "FIELD,METHOD"
msgstr "フィールド、メソッド"

#. Tag: para
#: Security.xml:3416
#, no-c-format
msgid ""
"This annotation identifies the property of the entity that will contain the "
"permission target. The property should be of type <literal>java.lang.String</"
"literal>."
msgstr ""
"このアノテーションはパーミッションの対象を含んでいるエンティティの属性を示し"
"ます。 この属性は<literal>java.lang.String</literal>でなければなりません。"

#. Tag: literal
#: Security.xml:3426
#, no-c-format
msgid "@PermissionAction"
msgstr "@PermissionAction"

#. Tag: para
#: Security.xml:3435
#, no-c-format
msgid ""
"This annotation identifies the property of the entity that will contain the "
"permission action. The property should be of type <literal>java.lang.String</"
"literal>."
msgstr ""
"このアノテーションはパーミッションアクションを含んでいるエンティティの属性を"
"示します。 この属性は<literal>java.lang.String</literal>でなければなりませ"
"ん。"

#. Tag: literal
#: Security.xml:3445
#, no-c-format
msgid "@PermissionUser"
msgstr "@PermissionUser"

#. Tag: para
#: Security.xml:3454
#, no-c-format
msgid ""
"This annotation identifies the property of the entity that will contain the "
"recipient user for the permission. It should be of type <literal>java.lang."
"String</literal> and contain the user's username."
msgstr ""
"このアノテーションはパーミッションの受益ユーザーを含んでいるエンティティの属"
"性を示します。 この属性は<literal>java.lang.String</literal>で、かつユーザー"
"のusernameを含んでいなければなりません。"

#. Tag: literal
#: Security.xml:3464
#, no-c-format
msgid "@PermissionRole"
msgstr "@PermissionRole"

#. Tag: para
#: Security.xml:3473
#, no-c-format
msgid ""
"This annotation identifies the property of the entity that will contain the "
"recipient role for the permission. It should be of type <literal>java.lang."
"String</literal> and contain the role name."
msgstr ""
"このアノテーションはパーミッションの受益ロールを含んでいるエンティティの属性"
"を示します。 この属性は<literal>java.lang.String</literal>で、かつロール名を"
"含んでいなければなりません。"

#. Tag: literal
#: Security.xml:3483
#, no-c-format
msgid "@PermissionDiscriminator"
msgstr "@PermissionDiscriminator"

#. Tag: para
#: Security.xml:3492
#, no-c-format
msgid ""
"This annotation should be used when the same entity/table is used to store "
"both user and role permissions. It identifies the property of the entity "
"that is used to discriminate between user and role permissions. By default, "
"if the column value contains the string literal <literal>user</literal>, "
"then the record will be treated as a user permission. If it contains the "
"string literal <literal>role</literal>, then it will be treated as a role "
"permission. It is also possible to override these defaults by specifying the "
"<literal>userValue</literal> and <literal>roleValue</literal> properties "
"within the annotation. For example, to use <literal>u</literal> and "
"<literal>r</literal> instead of <literal>user</literal> and <literal>role</"
"literal>, the annotation would be written like this:"
msgstr ""
"このアノテーションはユーザーとロールパーミッションを同じエンティティ（テーブ"
"ル）に保存する場合に使用します。 エンティティのユーザーとロールパーミッション"
"属性の識別のために使用します。 デフォルトで、<literal>user</literal>ストリン"
"グリテラルを含むカラムをユーザーパーミッションのカラムと見なし、"
"<literal>role</literal>ストリングリテラルを含むカラムをロールパーミッションの"
"カラムと見なします。 アノテーション中で<literal>userValue</literal>と"
"<literal>roleValue</literal>属性を指定する事により、これらのデフォルト値は上"
"書きする事ができます。 例えば、<literal>user</literal>の代わりに<literal>u</"
"literal>を、<literal>role</literal>の代わりに<literal>r</literal>を使うとする"
"と、アノテーションは下のようになります。"

#. Tag: programlisting
#: Security.xml:3502
#, no-c-format
msgid ""
"<![CDATA[  @PermissionDiscriminator(userValue = \"u\", roleValue = \"r\")]]>"
msgstr ""
"<![CDATA[  @PermissionDiscriminator(userValue = \"u\", roleValue = \"r\")]]>"

#. Tag: title
#: Security.xml:3513
#, no-c-format
msgid "Example Entity"
msgstr "エンティティの例"

#. Tag: para
#: Security.xml:3515
#, no-c-format
msgid ""
"Here is an example of an entity class that is used to store both user and "
"role permissions. The following class can be found inside the SeamSpace "
"example:"
msgstr ""
"この例ではユーザーとロールパーミッションが一つのエンティティクラスに保持され"
"ています。 下に示したクラスはサンプルのSeamSpaceからのものです。"

#. Tag: programlisting
#: Security.xml:3520
#, no-c-format
msgid ""
"<![CDATA[\n"
"@Entity\n"
"public class AccountPermission implements Serializable {  \n"
"   private Integer permissionId;\n"
"   private String recipient;\n"
"   private String target;\n"
"   private String action;\n"
"   private String discriminator;\n"
"   \n"
"   @Id @GeneratedValue\n"
"   public Integer getPermissionId() {\n"
"      return permissionId;\n"
"   }\n"
"   \n"
"   public void setPermissionId(Integer permissionId) {\n"
"      this.permissionId = permissionId;\n"
"   }\n"
"   \n"
"   @PermissionUser @PermissionRole\n"
"   public String getRecipient() {\n"
"      return recipient;\n"
"   }\n"
"   \n"
"   public void setRecipient(String recipient) {\n"
"      this.recipient = recipient;\n"
"   }\n"
"   \n"
"   @PermissionTarget\n"
"   public String getTarget() {\n"
"      return target;\n"
"   }\n"
"   \n"
"   public void setTarget(String target) {\n"
"      this.target = target;\n"
"   }\n"
"   \n"
"   @PermissionAction\n"
"   public String getAction() {\n"
"      return action;\n"
"   }\n"
"   \n"
"   public void setAction(String action) {\n"
"      this.action = action;\n"
"   }\n"
"   \n"
"   @PermissionDiscriminator\n"
"   public String getDiscriminator() {\n"
"      return discriminator;\n"
"   }\n"
"   \n"
"   public void setDiscriminator(String discriminator) {\n"
"      this.discriminator = discriminator;\n"
"   }\n"
"}          \n"
"          ]]>"
msgstr ""
"@Entity\n"
"@Name(\"message\")\n"
"@Scope(EVENT)\n"
"public class Message implements Serializable\n"
"{\n"
"   private Long id;\n"
"   private String title;\n"
"   private String text;\n"
"   private boolean read;\n"
"   private Date datetime;\n"
"   \n"
"   @Id @GeneratedValue\n"
"   public Long getId() {\n"
"      return id;\n"
"   }\n"
"   public void setId(Long id) {\n"
"      this.id = id;\n"
"   }\n"
"   \n"
"   @NotNull @Length(max=100)\n"
"   public String getTitle() {\n"
"      return title;\n"
"   }\n"
"   public void setTitle(String title) {\n"
"      this.title = title;\n"
"   }\n"
"   \n"
"   @NotNull @Lob\n"
"   public String getText() {\n"
"      return text;\n"
"   }\n"
"   public void setText(String text) {\n"
"      this.text = text;\n"
"   }\n"
"   \n"
"   @NotNull\n"
"   public boolean isRead() {\n"
"      return read;\n"
"   }\n"
"   public void setRead(boolean read) {\n"
"      this.read = read;\n"
"   }\n"
"   \n"
"   @NotNull \n"
"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
"   public Date getDatetime() {\n"
"      return datetime;\n"
"   }\n"
"   public void setDatetime(Date datetime) {\n"
"      this.datetime = datetime;\n"
"   }\n"
"   \n"
"}"

#. Tag: para
#: Security.xml:3522
#, no-c-format
msgid ""
"As can be seen in the above example, the <literal>getDiscriminator()</"
"literal> method has been annotated with the "
"<literal>@PermissionDiscriminator</literal> annotation, to allow "
"<literal>JpaPermissionStore</literal> to determine which records represent "
"user permissions and which represent role permissions. In addition, it can "
"also be seen that the <literal>getRecipient()</literal> method is annotated "
"with both <literal>@PermissionUser</literal> and <literal>@PermissionRole</"
"literal> annotations. This is perfectly valid, and simply means that the "
"<literal>recipient</literal> property of the entity will either contain the "
"name of the user or the name of the role, depending on the value of the "
"<literal>discriminator</literal> property."
msgstr ""
"上の例に見るように、<literal>getDiscriminator()</literal>メソッドが "
"<literal>@PermissionDiscriminator</literal>でアノテートされ、どのレコードが"
"ユーザーのパーミッションを示し、どのレコードがロールパーミッションを示してい"
"るかを<literal>JpaPermissionStore</literal>に示しています。 さらに、"
"<literal>getRecipient()</literal>メソッドが<literal>@PermissionUser</literal>"
"と<literal>@PermissionRole</literal>でアノテートされています。 これは、間違い"
"ではなく  <literal>discriminator</literal>属性の値により、エンティティの"
"<literal>recipient</literal>属性の内容をユーザーの名前、あるいはロールの名前"
"として処理する事を示しています。"

#. Tag: title
#: Security.xml:3535
#, no-c-format
msgid "Class-specific Permission Configuration"
msgstr "クラスに特定されたパーミッションの設定"

#. Tag: para
#: Security.xml:3537
#, no-c-format
msgid ""
"A further set of class-specific annotations can be used to configure a "
"specific set of allowable permissions for a target class. These permissions "
"can be found in the <literal>org.jboss.seam.annotation.security.permission</"
"literal> package:"
msgstr ""
"これ以外のクラス特有のアノテーションを使用して対象クラスに対して特定のパー"
"ミッションを設定する事ができます。 これらのパーミッションは<literal>org."
"jboss.seam.annotation.security.permission</literal>パッケージにあります。"

#. Tag: title
#: Security.xml:3544
#, no-c-format
msgid "Class Permission Annotations"
msgstr "クラス パーミッション アノテーション"

#. Tag: literal
#: Security.xml:3570
#, no-c-format
msgid "@Permissions"
msgstr "@Permissions"

#. Tag: literal
#: Security.xml:3575 Security.xml:3593
#, no-c-format
msgid "TYPE"
msgstr "タイプ"

#. Tag: para
#: Security.xml:3579
#, no-c-format
msgid ""
"A container annotation, this annotation may contain an array of "
"<literal>@Permission</literal> annotations."
msgstr ""
"コンテナのアノテーション、 このアノテーションは<literal>@Permission</literal>"
"の配列を含んでいます。"

#. Tag: literal
#: Security.xml:3588
#, no-c-format
msgid "@Permission"
msgstr "@Permission"

#. Tag: para
#: Security.xml:3597
#, no-c-format
msgid ""
"This annotation defines a single allowable permission action for the target "
"class. Its <literal>action</literal> property must be specified, and an "
"optional <literal>mask</literal> property may also be specified if "
"permission actions are to be persisted as bitmasked values (see next "
"section)."
msgstr ""
"このアノテーションでは対象クラスに対して一つのパーミッションアクションを認め"
"ています。 <literal>action</literal>属性が指定されていなければなりません。 ま"
"た、ビットマスク値によるパーミッションアクションを指定する場合には "
"<literal>mask</literal>が指定されていなければなりません。"

#. Tag: para
#: Security.xml:3609
#, no-c-format
msgid ""
"Here's an example of the above annotations in action. The following class "
"can also be found in the SeamSpace example:"
msgstr ""
"この例では、上のアノテーションを使っています。 下のクラスはサンプルの"
"SeamSpaceにもあります。"

#. Tag: programlisting
#: Security.xml:3613
#, no-c-format
msgid ""
"<![CDATA[@Permissions({\n"
"   @Permission(action = \"view\"),\n"
"   @Permission(action = \"comment\")\n"
"})\n"
"@Entity\n"
"public class MemberImage implements Serializable {]]>"
msgstr ""
"<![CDATA[@Permissions({\n"
"   @Permission(action = \"view\"),\n"
"   @Permission(action = \"comment\")\n"
"})\n"
"@Entity\n"
"public class MemberImage implements Serializable {]]>"

#. Tag: para
#: Security.xml:3615
#, no-c-format
msgid ""
"This example demonstrates how two allowable permission actions, "
"<literal>view</literal> and <literal>comment</literal> can be declared for "
"the entity class <literal>MemberImage</literal>."
msgstr ""
"この例では<literal>view</literal>と<literal>comment</literal>の二つのパーミッ"
"ションアクションを<literal>MemberImage</literal>エンティティクラスに対して宣"
"言する方法を示しています。"

#. Tag: title
#: Security.xml:3623
#, no-c-format
msgid "Permission masks"
msgstr "パーミッション マスク"

#. Tag: para
#: Security.xml:3625
#, no-c-format
msgid ""
"By default, multiple permissions for the same target object and recipient "
"will be persisted as a single database record, with the <literal>action</"
"literal> property/column containing a comma-separated list of the granted "
"actions. To reduce the amount of physical storage required to persist a "
"large number of permissions, it is possible to use a bitmasked integer value "
"(instead of a comma-separated list) to store the list of permission actions."
msgstr ""
"デフォルトでは、一つの対象オブジェクトと受益者に対する複数のパーミッション"
"は、一つのデータベースレコードとして<literal>action</literal>属性（DBではカラ"
"ム）に複数のアクションをコンマで区切って記述され、保持されます。 大量のパー"
"ミッション情報を、物理的な保存領域を抑えてデータベースに保存するために、パー"
"ミッションアクションにコンマ区切りの文字列リストの代わりに、整数のビットマス"
"ク値を使用する事ができます。"

#. Tag: para
#: Security.xml:3632
#, no-c-format
msgid ""
"For example, if recipient \"Bob\" is granted both the <literal>view</"
"literal> and <literal>comment</literal> permissions for a particular "
"<literal>MemberImage</literal> (an entity bean) instance, then by default "
"the <literal>action</literal> property of the permission entity will contain "
"\"<literal>view,comment</literal>\", representing the two granted permission "
"actions. Alternatively, if using bitmasked values for the permission "
"actions, as defined like so:"
msgstr ""
"例えば、受益者 \"Bob\"が特定の<literal>MemberImage</literal>（エンティティ"
"Bean）インスタンスに対して <literal>view</literal>と<literal>comment</"
"literal>のパーミッションが付与されていた場合、パーミッションエンティティの"
"<literal>action</literal>属性は、二つのパーミッションアクションを付与されてい"
"ることを示し\"<literal>view,comment</literal>\"を含んでいます。 代わりに、"
"ビットマスクをパーミッションアクションに使用すると下のようになります。"

#. Tag: programlisting
#: Security.xml:3639
#, no-c-format
msgid ""
"<![CDATA[@Permissions({\n"
"   @Permission(action = \"view\", mask = 1),\n"
"   @Permission(action = \"comment\", mask = 2)\n"
"})\n"
"@Entity\n"
"public class MemberImage implements Serializable {]]>"
msgstr ""
"<![CDATA[@Permissions({\n"
"   @Permission(action = \"view\", mask = 1),\n"
"   @Permission(action = \"comment\", mask = 2)\n"
"})\n"
"@Entity\n"
"public class MemberImage implements Serializable {]]>"

#. Tag: para
#: Security.xml:3641
#, no-c-format
msgid ""
"The <literal>action</literal> property will instead simply contain \"3"
"\" (with both the 1 bit and 2 bit switched on). Obviously for a large number "
"of allowable actions for any particular target class, the storage required "
"for the permission records is greatly reduced by using bitmasked actions."
msgstr ""
"<literal>action</literal>属性は、この場合単に\"3\"（bit 1 と 2 がonの状態）と"
"なります。 特定の対象クラスに対する大量のアクション許可を記述する場合には、ア"
"クションにビットマスクを使用する事により、明らかにパーミッションレコードの保"
"存に必要な容量を圧縮する事ができます。"

#. Tag: para
#: Security.xml:3647
#, no-c-format
msgid ""
"Obviously, it is very important that the <literal>mask</literal> values "
"specified are powers of 2."
msgstr "<literal>mask</literal>の値が2のｎ乗になっている事は明らかに重要です。"

#. Tag: title
#: Security.xml:3653
#, no-c-format
msgid "Identifier Policy"
msgstr "識別子ポリシー"

#. Tag: para
#: Security.xml:3655
#, no-c-format
msgid ""
"When storing or looking up permissions, <literal>JpaPermissionStore</"
"literal> must be able to uniquely identify specific object instances to "
"effectively operate on its permissions. To achieve this, an "
"<emphasis>identifier strategy</emphasis> may be assigned to each target "
"class for the generation of unique identifier values. Each identifier "
"strategy implementation knows how to generate unique identifiers for a "
"particular type of class, and it is a simple matter to create new identifier "
"strategies."
msgstr ""
"<literal>JpaPermissionStore</literal>は、パーミッションを保存したり、参照した"
"りするときに対象のインスタンスのパーミッションについて効果的に操作を行うため"
"に、対象インスタンスを一意に特定できる必要があります。 これを実現するために、"
"ユニークなIDを生成するよう個々の対象となるクラスに対して<emphasis>identifier "
"strategy</emphasis>がアサインされます。 それぞれのID戦略実装により、クラスの"
"タイプに応じてユニークなIDの生成が行われます。"

#. Tag: para
#: Security.xml:3663
#, no-c-format
msgid ""
"The <literal>IdentifierStrategy</literal> interface is very simple, "
"declaring only two methods:"
msgstr ""
"<literal>IdentifierStrategy</literal>インタフェースはたいへんに単純で、二つの"
"メソッドを宣言しているだけです。"

#. Tag: programlisting
#: Security.xml:3667
#, no-c-format
msgid ""
"<![CDATA[public interface IdentifierStrategy {\n"
"   boolean canIdentify(Class targetClass);\n"
"   String getIdentifier(Object target);\n"
"}]]>"
msgstr ""
"<![CDATA[public interface IdentifierStrategy {\n"
"   boolean canIdentify(Class targetClass);\n"
"   String getIdentifier(Object target);\n"
"}]]>"

#. Tag: para
#: Security.xml:3669
#, no-c-format
msgid ""
"The first method, <literal>canIdentify()</literal> simply returns "
"<literal>true</literal> if the identifier strategy is capable of generating "
"a unique identifier for the specified target class. The second method, "
"<literal>getIdentifier()</literal> returns the unique identifier value for "
"the specified target object."
msgstr ""
"最初のメソッド<literal>canIdentify()</literal>は、識別子ストラテジーが指定さ"
"れたターゲットクラスに対してユニークな識別子を生成可能な場合に<literal>true</"
"literal>を返します。 第2のメソッド<literal>getIdentifier()</literal>は指定さ"
"れたターゲットオブジェクトに対してユニークな識別子の値を返します。"

#. Tag: para
#: Security.xml:3675
#, no-c-format
msgid ""
"Seam provides two <literal>IdentifierStrategy</literal> implementations, "
"<literal>ClassIdentifierStrategy</literal> and "
"<literal>EntityIdentifierStrategy</literal> (see next sections for details)."
msgstr ""
"Seamは二つの<literal>IdentifierStrategy</literal>実装、"
"<literal>ClassIdentifierStrategy</literal>と"
"<literal>EntityIdentifierStrategy</literal>を提供しています（詳細は次のセク"
"ション）。"

#. Tag: para
#: Security.xml:3680
#, no-c-format
msgid ""
"To explicitly configure a specific identifier strategy to use for a "
"particular class, it should be annotated with <literal>org.jboss.seam."
"annotations.security.permission.Identifier</literal>, and the value should "
"be set to a concrete implementation of the <literal>IdentifierStrategy</"
"literal> interface. An optional <literal>name</literal> property can also be "
"specified, the effect of which is dependent upon the actual "
"<literal>IdentifierStrategy</literal> implementation used."
msgstr ""
"特定のクラスに対して、特別のID戦略を使用するよう明示的に設定するには、"
"<literal>org.jboss.seam.annotations.security.permission.Identifier</literal>"
"アノテーションがされ、<literal>IdentifierStrategy</literal> インタフェースの"
"実装に値が設定されている必要があります。 オプションとして<literal>name</"
"literal>属性を指定する事も可能ですが、この指定が及ぼす効果は "
"<literal>IdentifierStrategy</literal>の実際の実装に依存します。"

#. Tag: title
#: Security.xml:3690
#, no-c-format
msgid "ClassIdentifierStrategy"
msgstr "クラス識別子ストラテジー"

#. Tag: para
#: Security.xml:3692
#, no-c-format
msgid ""
"This identifier strategy is used to generate unique identifiers for classes, "
"and will use the value of the <literal>name</literal> (if specified) in the "
"<literal>@Identifier</literal> annotation. If there is no <literal>name</"
"literal> property provided, then it will attempt to use the component name "
"of the class (if the class is a Seam component), or as a last resort it will "
"create an identifier based on the name of the class (excluding the package "
"name). For example, the identifier for the following class will be "
"\"<literal>customer</literal>\":"
msgstr ""
"ID戦略はクラスに対してユニークなIDを生成するために使用し、指定してあれば"
"<literal>@Identifier</literal>アノテーション中の <literal>name</literal>の値"
"が使用されます。 もし、<literal>name</literal>属性が指定されていない場合に"
"は、Seamのコンポーネントであれば対象のクラスのコンポーネント名を使用するか、"
"さもなくばパッケージ名を除くクラスの名前を使用します。 下の例にあるクラスのID"
"は\"<literal>customer</literal>\"となります。"

#. Tag: programlisting
#: Security.xml:3701
#, no-c-format
msgid ""
"<![CDATA[@Identifier(name = \"customer\")\n"
"public class Customer {]]>"
msgstr ""
"<![CDATA[@Identifier(name = \"customer\")\n"
"public class Customer {]]>"

#. Tag: para
#: Security.xml:3703
#, no-c-format
msgid ""
"The identifier for the following class will be \"<literal>customerAction</"
"literal>\":"
msgstr "以下のクラスの識別子は\"<literal>customerAction</literal>\"となります:"

#. Tag: programlisting
#: Security.xml:3707
#, no-c-format
msgid ""
"<![CDATA[@Name(\"customerAction\")\n"
"public class CustomerAction { ]]>"
msgstr ""
"<![CDATA[@Name(\"customerAction\")\n"
"public class CustomerAction { ]]>"

#. Tag: para
#: Security.xml:3709
#, no-c-format
msgid ""
"Finally, the identifier for the following class will be \"<literal>Customer</"
"literal>\":"
msgstr ""
"最終的に、以下のクラスの識別子は \"<literal>Customer</literal>\"となります:"

#. Tag: programlisting
#: Security.xml:3713
#, no-c-format
msgid "<![CDATA[public class Customer { ]]>"
msgstr "<![CDATA[public class Customer { ]]>"

#. Tag: title
#: Security.xml:3718
#, no-c-format
msgid "EntityIdentifierStrategy"
msgstr "エンティティ識別子ストラテジー"

#. Tag: para
#: Security.xml:3720
#, no-c-format
msgid ""
"This identifier strategy is used to generate unique identifiers for entity "
"beans. It does so by concatenating the entity name (or otherwise configured "
"name) with a string representation of the primary key value of the entity. "
"The rules for generating the name section of the identifier are similar to "
"<literal>ClassIdentifierStrategy</literal>. The primary key value (i.e. the "
"<emphasis>id</emphasis> of the entity) is obtained using the "
"<literal>PersistenceProvider</literal> component, which is able to correctly "
"determine the value regardless of which persistence implementation is used "
"within the Seam application. For entities not annotated with "
"<literal>@Entity</literal>, it is necessary to explicitly configure the "
"identifier strategy on the entity class itself, for example:"
msgstr ""
"このID戦略はエンティティBean毎にユニークなIDを割り当てる方法で、エンティティ"
"のプライマリキーを示す文字列とエンティティの名前をつなぎ合わせて、IDを生成し"
"ています。 IDの名前セクションの生成ルールは<literal>ClassIdentifierStrategy</"
"literal>と同様です。 プライマリキー値 (即ち、エンティティの<emphasis>id</"
"emphasis> ) は <literal>PersistenceProvider</literal>コンポーネントを使って取"
"得する事ができ、アプリケーションでどの永続性実装を使用しているかに依存せずに"
"値を決める事ができます。 <literal>@Entity</literal>でアノテートされていないエ"
"ンティティについては, エンティティクラス自身に下のように明示的にID戦略を設定"
"する事が必要です。"

#. Tag: programlisting
#: Security.xml:3731
#, no-c-format
msgid ""
"<![CDATA[@Identifier(value = EntityIdentifierStrategy.class)\n"
"public class Customer { ]]>"
msgstr ""
"<![CDATA[@Identifier(value = EntityIdentifierStrategy.class)\n"
"public class Customer { ]]>"

#. Tag: para
#: Security.xml:3733
#, no-c-format
msgid ""
"For an example of the type of identifier values generated, assume we have "
"the following entity class:"
msgstr ""
"生成される識別子の例として、下のようなエンティティクラスを考えてみましょう。"

#. Tag: programlisting
#: Security.xml:3737
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"public class Customer {\n"
"  private Integer id;\n"
"  private String firstName;\n"
"  private String lastName;\n"
"  \n"
"  @Id \n"
"  public Integer getId() { return id; }\n"
"  public void setId(Integer id) { this.id = id; }\n"
"  \n"
"  public String getFirstName() { return firstName; }\n"
"  public void setFirstName(String firstName) { this.firstName = "
"firstName; }\n"
"  \n"
"  public String getLastName() { return lastName; }\n"
"  public void setLastName(String lastName) { this.lastName = lastName; }\n"
"}]]>"
msgstr ""
"<![CDATA[@Entity\n"
"public class Customer {\n"
"  private Integer id;\n"
"  private String firstName;\n"
"  private String lastName;\n"
"  \n"
"  @Id \n"
"  public Integer getId() { return id; }\n"
"  public void setId(Integer id) { this.id = id; }\n"
"  \n"
"  public String getFirstName() { return firstName; }\n"
"  public void setFirstName(String firstName) { this.firstName = "
"firstName; }\n"
"  \n"
"  public String getLastName() { return lastName; }\n"
"  public void setLastName(String lastName) { this.lastName = lastName; }\n"
"}]]>"

#. Tag: para
#: Security.xml:3739
#, no-c-format
msgid ""
"For a <literal>Customer</literal> instance with an <literal>id</literal> "
"value of <literal>1</literal>, the value of the identifier would be "
"\"<literal>Customer:1</literal>\". If the entity class is annotated with an "
"explicit identifier name, like so:"
msgstr ""
" <literal>id</literal>が<literal>1</literal>の<literal>Customer</literal>のイ"
"ンスタンスに対する識別子は\"<literal>Customer:1</literal>\"となります。 も"
"し、エンティティクラスに明示的な識別子名のアノテーションがあれば、"

#. Tag: programlisting
#: Security.xml:3745
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"@Identifier(name = \"cust\")\n"
"public class Customer { ]]>"
msgstr ""
"<![CDATA[@Entity\n"
"@Identifier(name = \"cust\")\n"
"public class Customer { ]]>"

#. Tag: para
#: Security.xml:3747
#, no-c-format
msgid ""
"Then a <literal>Customer</literal> with an <literal>id</literal> value of "
"<literal>123</literal> would have an identifier value of "
"\"<literal>cust:123</literal>\"."
msgstr ""
"結果として、<literal>id</literal>が<literal>123</literal>の"
"<literal>Customer</literal>は \"<literal>cust:123</literal>\"という識別子を持"
"つことになります。"

#. Tag: title
#: Security.xml:3760
#, no-c-format
msgid "Permission Management"
msgstr "パーミッションの管理"

#. Tag: para
#: Security.xml:3762
#, no-c-format
msgid ""
"In much the same way that Seam Security provides an Identity Management API "
"for the management of users and roles, it also provides a Permissions "
"Management API for the management of persistent user permissions, via the "
"<literal>PermissionManager</literal> component."
msgstr ""
"Seamセキュリティでユーザーとロールの管理のために提供しているID管理APIと同様"
"に、永続的なユーザーのアクセス権の管理のためのパーミッションマネージメントAPI"
"を <literal>PermissionManager</literal>により提供しています。"

#. Tag: title
#: Security.xml:3769
#, no-c-format
msgid "PermissionManager"
msgstr "パーミッションマネージャ"

#. Tag: para
#: Security.xml:3771
#, no-c-format
msgid ""
"The <literal>PermissionManager</literal> component is an application-scoped "
"Seam component that provides a number of methods for managing permissions. "
"Before it can be used, it must be configured with a permission store "
"(although by default it will attempt to use <literal>JpaPermissionStore</"
"literal> if it is available). To explicitly configure a custom permission "
"store, specify the <literal>permission-store</literal> property in "
"components.xml:"
msgstr ""
"<literal>PermissionManager</literal>コンポーネントはパーミッションを管理する"
"ための多くのメソッドを持つアプリケーションスコープのSeamのコンポーネントで"
"す。 使用する前にパーミッションストアを設定する必要があります（デフォルトで、"
"<literal>JpaPermissionStore</literal>が存在すれば、これを使うようになりま"
"す）。 明示的に別のパーミッションストアを設定する場合には、"
"<literal>components.xml</literal>に<literal>permission-store</literal>を設定"
"します。"

#. Tag: programlisting
#: Security.xml:3778
#, no-c-format
msgid ""
"<![CDATA[\n"
"<security:permission-manager permission-store=\"#{ldapPermissionStore}\"/"
">      \n"
"      ]]>"
msgstr ""
"<![CDATA[\n"
"<security:permission-manager permission-store=\"#{ldapPermissionStore}\"/"
">      \n"
"      ]]>"

#. Tag: para
#: Security.xml:3780
#, no-c-format
msgid ""
"The following table describes each of the available methods provided by "
"<literal>PermissionManager</literal>:"
msgstr ""
"以下の表に<literal>PermissionManager</literal>の提供するメソッドの詳細を示し"
"ます。"

#. Tag: title
#: Security.xml:3785
#, no-c-format
msgid "PermissionManager API methods"
msgstr "パーミッションマネージャAPIのメソッド"

#. Tag: para
#: Security.xml:3820 Security.xml:3839
#, no-c-format
msgid ""
"Returns a list of <literal>Permission</literal> objects representing all of "
"the permissions that have been granted for the specified target and action."
msgstr ""
"指定されたターゲットとアクションに対する承認されたすべてのパーミッションを示"
"す<literal>Permission</literal>オブジェクトを返します。"

#. Tag: literal
#: Security.xml:3854
#, no-c-format
msgid "grantPermission(Permission permission)"
msgstr "grantPermission(Permission permission)"

#. Tag: para
#: Security.xml:3858
#, no-c-format
msgid ""
"Persists (grants) the specified <literal>Permission</literal> to the backend "
"permission store. Returns true if the operation was successful."
msgstr ""
"バックエンドのパーミッションストアに指定した<literal>Permission</literal>sを"
"セーブする。 操作に成功した場合trueを返す。"

#. Tag: para
#: Security.xml:3877
#, no-c-format
msgid ""
"Persists (grants) the specified list of <literal>Permission</literal>s to "
"the backend permission store. Returns true if the operation was successful."
msgstr ""
"バックエンドのパーミッションストアに指定した複数の<literal>Permission</"
"literal>sをセーブする。 操作に成功した場合trueを返す。"

#. Tag: para
#: Security.xml:3896
#, no-c-format
msgid ""
"Removes (revokes) the specified <literal>Permission</literal> from the "
"backend permission store. Returns true if the operation was successful."
msgstr ""
"バックエンドのパーミッションストアから指定した<literal>Permission</literal>s"
"を取り除く（削除する）。操作に成功した場合trueを返す。"

#. Tag: para
#: Security.xml:3915
#, no-c-format
msgid ""
"Removes (revokes) the specified list of <literal>Permission</literal>s from "
"the backend permission store. Returns true if the operation was successful."
msgstr ""
"バックエンドのパーミッションストアから指定した複数の<literal>Permission</"
"literal>sを取り除く（削除する）。 操作に成功した場合trueを返す。"

#. Tag: para
#: Security.xml:3934
#, no-c-format
msgid ""
"Returns a list of the available actions for the specified target object. The "
"actions that this method returns are dependent on the <literal>@Permission</"
"literal> annotations configured on the target object's class."
msgstr ""
"対象ターゲットに対する適用可能なアクションのリストを返す。 返されるアクション"
"はターゲットオブジェクトクラスに設定されている<literal>@Permission</literal> "
"アノテーションに依存する。"

#. Tag: title
#: Security.xml:3949
#, no-c-format
msgid "Permission checks for PermissionManager operations"
msgstr "パーミッションマネージャ操作のためのパーミッションチェック"

#. Tag: para
#: Security.xml:3951
#, no-c-format
msgid ""
"Invoking the methods of <literal>PermissionManager</literal> requires that "
"the currently-authenticated user has the appropriate authorization to "
"perform that management operation. The following table lists the required "
"permissions that the current user must have."
msgstr ""
"<literal>PermissionManager</literal>メソッドを起動する場合には現在の認証ユー"
"ザーが当該管理操作をするために必要な適切なパーミッションを持っている必要があ"
"ります。 下の表に、現在のユーザーが持っていなければならないパーミッションの一"
"覧を示します。"

#. Tag: title
#: Security.xml:3958
#, no-c-format
msgid "Permission Management Security Permissions"
msgstr "パーミッション管理 セキュリティパーミッション"

#. Tag: literal
#: Security.xml:3982
#, no-c-format
msgid "listPermissions()"
msgstr "listPermissions()"

#. Tag: para
#: Security.xml:3986
#, no-c-format
msgid "The specified <literal>target</literal>"
msgstr "特定の<literal>target</literal>"

#. Tag: literal
#: Security.xml:3992
#, no-c-format
msgid "seam.read-permissions"
msgstr "seam.read-permissions"

#. Tag: literal
#: Security.xml:4000 Security.xml:4020
#, no-c-format
msgid "grantPermission()"
msgstr "grantPermission()"

#. Tag: para
#: Security.xml:4004
#, no-c-format
msgid ""
"The target of the specified <literal>Permission</literal>, or each of the "
"targets for the specified list of <literal>Permission</literal>s (depending "
"on which method is called)."
msgstr ""
"ターゲットの特定の<literal>Permission</literal>、あるいは個別のターゲットの"
"<literal>Permission</literal>sリスト（どちらのメソッドを呼ぶのかにより異な"
"る）"

#. Tag: literal
#: Security.xml:4012 Security.xml:4030 Security.xml:4048
#, no-c-format
msgid "seam.grant-permission"
msgstr "seam.grant-permission"

#. Tag: para
#: Security.xml:4024 Security.xml:4060
#, no-c-format
msgid "The target of the specified <literal>Permission</literal>."
msgstr "ターゲットの特定の<literal>Permission</literal>"

#. Tag: literal
#: Security.xml:4038
#, no-c-format
msgid "grantPermissions()"
msgstr "grantPermissions()"

#. Tag: para
#: Security.xml:4042 Security.xml:4078
#, no-c-format
msgid ""
"Each of the targets of the specified list of <literal>Permission</literal>s."
msgstr "それぞれのターゲットの特定の<literal>Permission</literal>s"

#. Tag: literal
#: Security.xml:4056
#, no-c-format
msgid "revokePermission()"
msgstr "revokePermission()"

#. Tag: literal
#: Security.xml:4066 Security.xml:4084
#, no-c-format
msgid "seam.revoke-permission"
msgstr "seam.revoke-permission"

#. Tag: literal
#: Security.xml:4074
#, no-c-format
msgid "revokePermissions()"
msgstr "revokePermissions()"

#. Tag: title
#: Security.xml:4097
#, no-c-format
msgid "SSL Security"
msgstr "SSLによるセキュリティ"

#. Tag: para
#: Security.xml:4099
#, no-c-format
msgid ""
"Seam includes basic support for serving sensitive pages via the HTTPS "
"protocol. This is easily configured by specifying a <literal>scheme</"
"literal> for the page in <literal>pages.xml</literal>. The following example "
"shows how the view <literal>/login.xhtml</literal> is configured to use "
"HTTPS:"
msgstr ""
"SeamはHTTPSプロトコルによるpageのセキュリティを基本的な部分についてサポートし"
"ています。 この機能は、<literal>pages.xml</literal>で必要なページについて"
"<literal>scheme</literal>を指定することにより簡単に設定することができます。 "
"下の例では<literal>/login.xhtml</literal>でHTTPSを使う様に設定しています。"

#. Tag: programlisting
#: Security.xml:4106
#, no-c-format
msgid "<![CDATA[<page view-id=\"/login.xhtml\" scheme=\"https\"/>]]>"
msgstr "<![CDATA[<page view-id=\"/login.xhtml\" scheme=\"https\"/>]]>"

#. Tag: para
#: Security.xml:4108
#, no-c-format
msgid ""
"This configuration is automatically extended to both <literal>s:link</"
"literal> and <literal>s:button</literal> JSF controls, which (when "
"specifying the <literal>view</literal>) will also render the link using the "
"correct protocol. Based on the previous example, the following link will use "
"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
"use it:"
msgstr ""
"また、この設定は自動的にJSFの<literal>s:link</literal>や<literal>s:button</"
"literal>にも引き継がれ (<literal>view</literal>で指定した場合) 、リンクも正し"
"いプロトコルで描画されます。前述の例の場合、下のようなリンクも<literal>/"
"login.xhtml</literal>がHTTPSを使うように設定されているために、<literal>s:"
"link</literal>先の<literal>login.xhmtl</literal>にもHTTPSがプロトコルとして使"
"用されます。"

#. Tag: programlisting
#: Security.xml:4115
#, no-c-format
msgid "<![CDATA[<s:link view=\"/login.xhtml\" value=\"Login\"/>]]>"
msgstr "<![CDATA[<s:link view=\"/login.xhtml\" value=\"Login\"/>]]>"

#. Tag: para
#: Security.xml:4117
#, no-c-format
msgid ""
"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
"protocol will cause a redirect to the same view using the <emphasis>correct</"
"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
"\"https\"</literal> using HTTP will cause a redirect to the same page using "
"HTTPS."
msgstr ""
"指定されたプロトコル以外 (<emphasis>正しくない</emphasis>プロトコル) を使っ"
"て、ページを見ようとすると、<emphasis>正しい</emphasis>プロトコルを使って、指"
"定のページへリダイレクトされます。 <literal>schema=\"https\"</literal>が指定"
"されているページにhttpでアクセスしようとすると、そのページにhttpsを使ってリダ"
"イレクトされます。"

#. Tag: para
#: Security.xml:4124
#, no-c-format
msgid ""
"It is also possible to configure a <emphasis>default scheme</emphasis> for "
"all pages. This is useful if you wish to use HTTPS for a only few pages. If "
"no default scheme is specified then the normal behavior is to continue use "
"the current scheme. So once the user accessed a page that required HTTPS, "
"then HTTPS would continue to be used after the user navigated away to other "
"non-HTTPS pages. (While this is good for security, it is not so great for "
"performance!). To define HTTP as the default <literal>scheme</literal>, add "
"this line to <literal>pages.xml</literal>:"
msgstr ""
"すべてのページに対して<emphasis>デフォルトのscheme</emphasis>を設定することも"
"可能で、一部のページに対してHTTPSを使用したい場合などに有効です。 デフォルト"
"スキーマが設定されていない場合には、現在のスキーマを継承します。 従って、ユー"
"ザーがHTTPSを必要とするページにアクセスすると、それ以降はHTTPSを必要としない"
"ページに対してもHTTPSを使ったアクセスとなります（これは、セキュリティ上は良い"
"のですが、パフォーマンス上は問題があります）。 HTTPをデフォルトの"
"<literal>scheme</literal>として指定する場合には次の一行を<literal>pages.xml</"
"literal>に追加してください。"

#. Tag: programlisting
#: Security.xml:4133
#, no-c-format
msgid "<![CDATA[<page view-id=\"*\" scheme=\"http\" />]]>"
msgstr "<![CDATA[<page view-id=\"*\" scheme=\"http\" />]]>"

#. Tag: para
#: Security.xml:4135
#, no-c-format
msgid ""
"Of course, if <emphasis>none</emphasis> of the pages in your application use "
"HTTPS then it is not required to specify a default scheme."
msgstr ""
"もちろん、HTTPSを使う必要がなければ、デフォルトのschemaを指定する必要もありま"
"せん。"

#. Tag: para
#: Security.xml:4140
#, no-c-format
msgid ""
"You may configure Seam to automatically invalidate the current HTTP session "
"each time the scheme changes. Just add this line to <literal>components.xml</"
"literal>:"
msgstr ""
"以下のように、<literal>components.xml</literal>に設定することにより、スキーマ"
"が変さらになるたびに現在のHTTPセッションを自動的に無効にする事ができます。"

#. Tag: programlisting
#: Security.xml:4145
#, no-c-format
msgid "<![CDATA[<web:session invalidate-on-scheme-change=\"true\"/>]]>"
msgstr "<![CDATA[<web:session invalidate-on-scheme-change=\"true\"/>]]>"

#. Tag: para
#: Security.xml:4147
#, no-c-format
msgid ""
"This option helps make your system less vulnerable to sniffing of the "
"session id or leakage of sensitive data from pages using HTTPS to other "
"pages using HTTP."
msgstr ""
"このオプションはHTTPSのページから、HTTPのページへの重要データの漏れや、セッ"
"ションIDの盗聴に対する脆弱性を減少させます。"

#. Tag: title
#: Security.xml:4153
#, no-c-format
msgid "Overriding the default ports"
msgstr "デフォルトのポートの上書き"

#. Tag: para
#: Security.xml:4155
#, no-c-format
msgid ""
"If you wish to configure the HTTP and HTTPS ports manually, they may be "
"configured in <literal>pages.xml</literal> by specifying the <literal>http-"
"port</literal> and <literal>https-port</literal> attributes on the "
"<literal>pages</literal> element:"
msgstr ""
"もし個別にHTTPとHTTPSの使用を設定する必要があるのであれば、<literal>pages."
"xml</literal> の<literal>pages</literal> エレメントに<literal>http-port</"
"literal> あるいは <literal>https-port</literal>を設定することにより行えます。"

#. Tag: programlisting
#: Security.xml:4161
#, fuzzy, no-c-format
msgid ""
"<![CDATA[\n"
"<pages xmlns=\"http://jboss.org/schema/seam/pages\"\n"
"       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"       xsi:schemaLocation=\"http://jboss.org/schema/seam/pages http://"
"jboss.org/schema/seam/pages-2.3.xsd\"\n"
"       no-conversation-view-id=\"/home.xhtml\"\n"
"       login-view-id=\"/login.xhtml\"\n"
"       http-port=\"8080\"\n"
"       https-port=\"8443\">      \n"
"      ]]>"
msgstr ""
"<![CDATA[\n"
"<pages xmlns=\"http://jboss.org/schema/seam/pages\"\n"
"       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
"       xsi:schemaLocation=\"http://jboss.org/schema/seam/pages http://"
"jboss.org/schema/seam/pages-2.1.xsd\"\n"
"       no-conversation-view-id=\"/home.xhtml\"\n"
"       login-view-id=\"/login.xhtml\"\n"
"       http-port=\"8080\"\n"
"       https-port=\"8443\">      \n"
"      ]]>"

#. Tag: title
#: Security.xml:4167
#, no-c-format
msgid "CAPTCHA"
msgstr "キャプチャ"

#. Tag: para
#: Security.xml:4169
#, no-c-format
msgid ""
"Though strictly not part of the security API, Seam provides a built-in "
"CAPTCHA (<emphasis>C</emphasis>ompletely <emphasis>A</emphasis>utomated "
"<emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring test to tell "
"<emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans <emphasis>A</"
"emphasis>part) algorithm to prevent automated processes from interacting "
"with your application."
msgstr ""
"厳密にはセキュリティAPIの一部ではありませんが、SeamはCAPCHA(<emphasis>C</"
"emphasis>ompletely <emphasis>A</emphasis>utomated <emphasis>P</"
"emphasis>ublic <emphasis>T</emphasis>uring test to tell <emphasis>C</"
"emphasis>omputers and <emphasis>H</emphasis>umans <emphasis>A</emphasis>part)"
"アルゴリズムを内蔵しており、ウェブ上の自動処理プログラムによりアプリケーショ"
"ンが動作しないようにする事を可能にしています。"

#. Tag: title
#: Security.xml:4177
#, no-c-format
msgid "Configuring the CAPTCHA Servlet"
msgstr "キャプチャ サーブレットの設定"

#. Tag: para
#: Security.xml:4178
#, no-c-format
msgid ""
"To get up and running, it is necessary to configure the Seam Resource "
"Servlet, which will provide the Captcha challenge images to your pages. This "
"requires the following entry in <literal>web.xml</literal>:"
msgstr ""
"キャプチャを起動して走らせるためには、Seamのリソースサーブレットを下のよう"
"に、<literal>web.xml</literal>に設定する必要があります。これにより、アプリ"
"ケーションのページにキャプチャチャレンジのイメージを提供するようになります。"

#. Tag: programlisting
#: Security.xml:4183
#, no-c-format
msgid ""
"<![CDATA[<servlet>\n"
"    <servlet-name>Seam Resource Servlet</servlet-name>\n"
"    <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-"
"class>\n"
"</servlet>\n"
"\n"
"<servlet-mapping>\n"
"    <servlet-name>Seam Resource Servlet</servlet-name>\n"
"    <url-pattern>/seam/resource/*</url-pattern>\n"
"</servlet-mapping>]]>"
msgstr ""
"<![CDATA[<servlet>\n"
"    <servlet-name>Seam Resource Servlet</servlet-name>\n"
"    <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-"
"class>\n"
"</servlet>\n"
"\n"
"<servlet-mapping>\n"
"    <servlet-name>Seam Resource Servlet</servlet-name>\n"
"    <url-pattern>/seam/resource/*</url-pattern>\n"
"</servlet-mapping>]]>"

#. Tag: title
#: Security.xml:4188
#, no-c-format
msgid "Adding a CAPTCHA to a form"
msgstr "キャプチャのフォームへの追加"

#. Tag: para
#: Security.xml:4190
#, no-c-format
msgid ""
"Adding a CAPTCHA challenge to a form is extremely easy. Here's an example:"
msgstr ""
"キャプチャチャレンジをフォームに追加するのは以下のようにいたって簡単です:"

#. Tag: programlisting
#: Security.xml:4194
#, no-c-format
msgid ""
"<![CDATA[<h:graphicImage value=\"/seam/resource/captcha\"/>\n"
"<h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" required="
"\"true\">\n"
"   <s:validate />\n"
"</h:inputText>\n"
"<h:message for=\"verifyCaptcha\"/>]]>"
msgstr ""
"<![CDATA[<h:graphicImage value=\"/seam/resource/captcha\"/>\n"
"<h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" required="
"\"true\">\n"
"   <s:validate />\n"
"</h:inputText>\n"
"<h:message for=\"verifyCaptcha\"/>]]>"

#. Tag: para
#: Security.xml:4196
#, no-c-format
msgid ""
"That's all there is to it. The <literal>graphicImage</literal> control "
"displays the CAPTCHA challenge, and the <literal>inputText</literal> "
"receives the user's response. The response is automatically validated "
"against the CAPTCHA when the form is submitted."
msgstr ""
"これですべてです。 <literal>graphicImage</literal> がキャプチャチャレンジの表"
"示を制御し、<literal>inputText</literal>がユーザーからの入力を受け付けます。 "
"ユーザーの入力はフォームが送信された時に自動的にキャプチャと照合されます。"

#. Tag: title
#: Security.xml:4205
#, no-c-format
msgid "Customising the CAPTCHA algorithm"
msgstr "キャプチャアルゴリズムのカスタム化"

#. Tag: para
#: Security.xml:4207
#, no-c-format
msgid ""
"You may customize the CAPTCHA algorithm by overriding the built-in component:"
msgstr ""
"内蔵コンポーネントをオーバーライドする事により、キャプチャのアルゴリズムをカ"
"スタマイズすることができます。"

#. Tag: programlisting
#: Security.xml:4211
#, no-c-format
msgid ""
"<![CDATA[@Name(\"org.jboss.seam.captcha.captcha\")\n"
"@Scope(SESSION)\n"
"public class HitchhikersCaptcha extends Captcha\n"
"{\n"
"   @Override @Create\n"
"   public void init()\n"
"   {\n"
"      setChallenge(\"What is the answer to life, the universe and everything?"
"\");\n"
"      setCorrectResponse(\"42\");\n"
"   }\n"
"\n"
"   @Override\n"
"   public BufferedImage renderChallenge()\n"
"   {\n"
"       BufferedImage img = super.renderChallenge();\n"
"       img.getGraphics().drawOval(5, 3, 60, 14); //add an obscuring "
"decoration\n"
"       return img;\n"
"   }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"org.jboss.seam.captcha.captcha\")\n"
"@Scope(SESSION)\n"
"public class HitchhikersCaptcha extends Captcha\n"
"{\n"
"   @Override @Create\n"
"   public void init()\n"
"   {\n"
"      setChallenge(\"What is the answer to life, the universe and everything?"
"\");\n"
"      setCorrectResponse(\"42\");\n"
"   }\n"
"\n"
"   @Override\n"
"   public BufferedImage renderChallenge()\n"
"   {\n"
"       BufferedImage img = super.renderChallenge();\n"
"       img.getGraphics().drawOval(5, 3, 60, 14); //add an obscuring "
"decoration\n"
"       return img;\n"
"   }\n"
"}]]>"

#. Tag: title
#: Security.xml:4218 Security.xml:4226
#, no-c-format
msgid "Security Events"
msgstr "セキュリティ イベント"

#. Tag: para
#: Security.xml:4220
#, no-c-format
msgid ""
"The following table describes a number of events (see <xref linkend=\"events"
"\"/>) raised by Seam Security in response to certain security-related events."
msgstr ""
"以下の表に、セキュリティ関連のイベントによりSeamのセキュリティで発生するイベ"
"ント（<xref linkend=\"events\"/>）を一覧にしました。"

#. Tag: para
#: Security.xml:4235
#, no-c-format
msgid "Event Key"
msgstr "イベントキー"

#. Tag: literal
#: Security.xml:4248
#, no-c-format
msgid "org.jboss.seam.security.loginSuccessful"
msgstr "org.jboss.seam.security.loginSuccessful"

#. Tag: para
#: Security.xml:4252
#, no-c-format
msgid "Raised when a login attempt is successful."
msgstr "ログインに成功した時に発生"

#. Tag: literal
#: Security.xml:4260
#, no-c-format
msgid "org.jboss.seam.security.loginFailed"
msgstr "org.jboss.seam.security.loginFailed"

#. Tag: para
#: Security.xml:4264
#, no-c-format
msgid "Raised when a login attempt fails."
msgstr "ログインに失敗した時に発生"

#. Tag: literal
#: Security.xml:4272
#, no-c-format
msgid "org.jboss.seam.security.alreadyLoggedIn"
msgstr "org.jboss.seam.security.alreadyLoggedIn"

#. Tag: para
#: Security.xml:4276
#, no-c-format
msgid ""
"Raised when a user that is already authenticated attempts to log in again."
msgstr "ユーザーがすでに認証されていて再度ログインした時に発生"

#. Tag: literal
#: Security.xml:4284
#, no-c-format
msgid "org.jboss.seam.security.notLoggedIn"
msgstr "org.jboss.seam.security.notLoggedIn"

#. Tag: para
#: Security.xml:4288
#, no-c-format
msgid "Raised when a security check fails when the user is not logged in."
msgstr ""
"ユーザーがログインしていないためにセキュリティチェックに失敗した時に発生"

#. Tag: literal
#: Security.xml:4296
#, no-c-format
msgid "org.jboss.seam.security.notAuthorized"
msgstr "org.jboss.seam.security.notAuthorized"

#. Tag: para
#: Security.xml:4300
#, no-c-format
msgid ""
"Raised when a security check fails when the user is logged in however "
"doesn't have sufficient privileges."
msgstr ""
"ユーザーがログインできても十分な特権が無くセキュリティチェックに失敗した時に"
"発生"

#. Tag: literal
#: Security.xml:4308
#, no-c-format
msgid "org.jboss.seam.security.preAuthenticate"
msgstr "org.jboss.seam.security.preAuthenticate"

#. Tag: para
#: Security.xml:4312
#, no-c-format
msgid "Raised just prior to user authentication."
msgstr "ユーザーが認証される直前に発生"

#. Tag: literal
#: Security.xml:4320
#, no-c-format
msgid "org.jboss.seam.security.postAuthenticate"
msgstr "org.jboss.seam.security.postAuthenticate"

#. Tag: para
#: Security.xml:4324
#, no-c-format
msgid "Raised just after user authentication."
msgstr "ユーザーが認証された直後に発生"

#. Tag: literal
#: Security.xml:4332
#, no-c-format
msgid "org.jboss.seam.security.loggedOut"
msgstr "org.jboss.seam.security.loggedOut"

#. Tag: para
#: Security.xml:4336
#, no-c-format
msgid "Raised after the user has logged out."
msgstr "ユーザーがログアウトした後に発生"

#. Tag: literal
#: Security.xml:4344
#, no-c-format
msgid "org.jboss.seam.security.credentialsUpdated"
msgstr "org.jboss.seam.security.credentialsUpdated"

#. Tag: para
#: Security.xml:4348
#, no-c-format
msgid "Raised when the user's credentials have been changed."
msgstr "ユーザーのクレデンシャル（信用情報）が変更された時に発生"

#. Tag: literal
#: Security.xml:4356
#, no-c-format
msgid "org.jboss.seam.security.rememberMe"
msgstr "org.jboss.seam.security.rememberMe"

#. Tag: para
#: Security.xml:4360
#, no-c-format
msgid "Raised when the Identity's rememberMe property is changed."
msgstr "IdentityのrememberMeプロパティが変更された時に発生"

#. Tag: title
#: Security.xml:4373
#, no-c-format
msgid "Run As"
msgstr "自分とは別の権限での実行"

#. Tag: para
#: Security.xml:4375
#, no-c-format
msgid ""
"Sometimes it may be necessary to perform certain operations with elevated "
"privileges, such as creating a new user account as an unauthenticated user. "
"Seam Security supports such a mechanism via the <literal>RunAsOperation</"
"literal> class. This class allows either the <literal>Principal</literal> or "
"<literal>Subject</literal>, or the user's roles to be overridden for a "
"single set of operations."
msgstr ""
"場合により、上位権限で処理することが必要な場合があります（たとえば、認証され"
"ていないユーザーが、新しいユーザーアカウントを作成する場合）。 Seamはこのよう"
"な機能を<literal>RunAsOperation</literal>クラスで提供しています。 このクラス"
"は、限定された一組の操作に対して <literal>Principal</literal>、"
"<literal>Subject</literal>、あるいはユーザーのロールを一時的に上書きする事を"
"可能にします。"

#. Tag: para
#: Security.xml:4383
#, no-c-format
msgid ""
"The following code example demonstrates how <literal>RunAsOperation</"
"literal> is used, by calling its <literal>addRole()</literal> method to "
"provide a set of roles to masquerade as for the duration of the operation. "
"The <literal>execute()</literal> method contains the code that will be "
"executed with the elevated privileges."
msgstr ""
"以下のコード例では<literal>RunAsOperation</literal>の使われ方について、"
"<literal>addRole()</literal> メソッドを呼び出して操作終了まで特定のロールを付"
"与する方法を示します。 <literal>execute()</literal> メソッドはより上位の特権"
"で実行するためのコードを持っています。"

#. Tag: programlisting
#: Security.xml:4390
#, no-c-format
msgid ""
"<![CDATA[    new RunAsOperation() {       \n"
"       public void execute() {\n"
"          executePrivilegedOperation();\n"
"       }         \n"
"    }.addRole(\"admin\")\n"
"     .run();]]>"
msgstr ""
"<![CDATA[    new RunAsOperation() {       \n"
"       public void execute() {\n"
"          executePrivilegedOperation();\n"
"       }         \n"
"    }.addRole(\"admin\")\n"
"     .run();]]>"

#. Tag: para
#: Security.xml:4392
#, no-c-format
msgid ""
"In a similar way, the <literal>getPrincipal()</literal> or "
"<literal>getSubject()</literal> methods can also be overriden to specify the "
"<literal>Principal</literal> and <literal>Subject</literal> instances to use "
"for the duration of the operation. Finally, the <literal>run()</literal> "
"method is used to carry out the <literal>RunAsOperation</literal>."
msgstr ""
"同様に<literal>getPrincipal()</literal> や <literal>getSubject()</literal>メ"
"ソッドは<literal>Principal</literal>インスタンスおよび <literal>Subject</"
"literal>インスタンスを実行中に上書きする事ができます。 最終的に"
"<literal>RunAsOperation</literal>を実行するために<literal>run()</literal>メ"
"ソッドを使用します。"

#. Tag: title
#: Security.xml:4403
#, no-c-format
msgid "Extending the Identity component"
msgstr "IDコンポーネント（Identity component）の拡張"

#. Tag: para
#: Security.xml:4405
#, no-c-format
msgid ""
"Sometimes it might be necessary to extend the Identity component if your "
"application has special security requirements. The following example "
"(contrived, as credentials would normally be handled by the "
"<literal>Credentials</literal> component instead) shows an extended Identity "
"component with an additional <literal>companyCode</literal> field. The "
"install precendence of <literal>APPLICATION</literal> ensures that this "
"extended Identity gets installed in preference to the built-in Identity."
msgstr ""
"アプリケーションが特別なセキュリティを要求する場合には、Identityコンポーネン"
"トを拡張する必要がある場合があります。以下の例（説明のためのもので、通常、ク"
"レデンシャルは<literal>Credentials</literal>コンポーネントにより処理されま"
"す）では<literal>companyCode</literal> フィールドを追加した拡張Identityコン"
"ポーネントを示しています。<literal>APPLICATION</literal>により、拡張Identity"
"が内蔵Identityよりも優先されてインストールされることを保証しています。"

#. Tag: programlisting
#: Security.xml:4413
#, no-c-format
msgid ""
"<![CDATA[@Name(\"org.jboss.seam.security.identity\")\n"
"@Scope(SESSION)\n"
"@Install(precedence = APPLICATION)\n"
"@BypassInterceptors\n"
"@Startup\n"
"public class CustomIdentity extends Identity\n"
"{\n"
"   private static final LogProvider log = Logging.getLogProvider"
"(CustomIdentity.class);\n"
"\n"
"   private String companyCode;\n"
"\n"
"   public String getCompanyCode()\n"
"   {\n"
"      return companyCode;\n"
"   }\n"
"\n"
"   public void setCompanyCode(String companyCode)\n"
"   {\n"
"      this.companyCode = companyCode;\n"
"   }\n"
"\n"
"   @Override\n"
"   public String login()\n"
"   {\n"
"      log.info(\"###### CUSTOM LOGIN CALLED ######\");\n"
"      return super.login();\n"
"   }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"org.jboss.seam.security.identity\")\n"
"@Scope(SESSION)\n"
"@Install(precedence = APPLICATION)\n"
"@BypassInterceptors\n"
"@Startup\n"
"public class CustomIdentity extends Identity\n"
"{\n"
"   private static final LogProvider log = Logging.getLogProvider"
"(CustomIdentity.class);\n"
"\n"
"   private String companyCode;\n"
"\n"
"   public String getCompanyCode()\n"
"   {\n"
"      return companyCode;\n"
"   }\n"
"\n"
"   public void setCompanyCode(String companyCode)\n"
"   {\n"
"      this.companyCode = companyCode;\n"
"   }\n"
"\n"
"   @Override\n"
"   public String login()\n"
"   {\n"
"      log.info(\"###### CUSTOM LOGIN CALLED ######\");\n"
"      return super.login();\n"
"   }\n"
"}]]>"

#. Tag: para
#: Security.xml:4416
#, no-c-format
msgid ""
"Note that an <literal>Identity</literal> component must be marked "
"<literal>@Startup</literal>, so that it is available immediately after the "
"<literal>SESSION</literal> context begins. Failing to do this may render "
"certain Seam functionality inoperable in your application."
msgstr ""
" <literal>SESSION</literal>コンテキストが開始されると同時に利用可能とするため"
"に、<literal>Identity</literal>コンポーネントは<literal>@Startup</literal>と"
"アノテートされている必要があることに留意してください。 これが行われていない"
"と、Seamのいくつかの機能が動作しないことがあります。"

#. Tag: title
#: Security.xml:4428
#, no-c-format
msgid "OpenID"
msgstr ""

#. Tag: para
#: Security.xml:4430
#, no-c-format
msgid ""
"OpenID is a community standard for external web-based authentication. The "
"basic idea is that any web application can supplement (or replace) its local "
"handling of authentication by delegating responsibility to an external "
"OpenID server of the user's chosing. This benefits the user, who no longer "
"has to remember a name and password for every web application he uses, and "
"the developer, who is relieved of some of the burden of maintaining a "
"complex authentication system."
msgstr ""

#. Tag: para
#: Security.xml:4439
#, no-c-format
msgid ""
"When using OpenID, the user selects an OpenID provider, and the provider "
"assigns the user an OpenID. The id will take the form of a URL, for example "
"<literal>http://maximoburrito.myopenid.com</literal> however, it's "
"acceptable to leave off the <literal>http://</literal> part of the "
"identifier when logging into a site. The web application (known as a relying "
"party in OpenID-speak) determines which OpenID server to contact and "
"redirects the user to the remote site for authentication. Upon successful "
"authentication the user is given the (cryptographically secure) token "
"proving his identity and is redirected back to the original web application."
"The local web application can then be sure the user accessing the "
"application controls the OpenID he presented."
msgstr ""

#. Tag: para
#: Security.xml:4448
#, no-c-format
msgid ""
"It's important to realize at this point that authentication does not imply "
"authorization. The web application still needs to make a determination of "
"how to use that information. The web application could treat the user as "
"instantly logged in and give full access to the system or it could try and "
"map the presented OpenID to a local user account, prompting the user to "
"register if he hasn't already. The choice of how to handle the OpenID is "
"left as a design decision for the local application."
msgstr ""

#. Tag: title
#: Security.xml:4458
#, fuzzy, no-c-format
msgid "Configuring OpenID"
msgstr "エンティティの設定"

#. Tag: para
#: Security.xml:4459
#, no-c-format
msgid ""
"Seam uses the openid4java package and requires four additional JARs to make "
"use of the Seam integration. These are: <literal>htmlparser.jar</literal>, "
"<literal>openid4java.jar</literal>, <literal>openxri-client.jar</literal> "
"and <literal>openxri-syntax.jar</literal>."
msgstr ""

#. Tag: para
#: Security.xml:4465
#, no-c-format
msgid ""
"OpenID processing requires the use of the <literal>OpenIdPhaseListener</"
"literal>, which should be added to your <literal>faces-config.xml</literal> "
"file. The phase listener processes the callback from the OpenID provider, "
"allowing re-entry into the local application."
msgstr ""

#. Tag: programlisting
#: Security.xml:4471
#, no-c-format
msgid ""
"&lt;lifecycle&gt;\n"
"    &lt;phase-listener&gt;org.jboss.seam.security.openid."
"OpenIdPhaseListener&lt;/phase-listener&gt;\n"
"&lt;/lifecycle&gt;"
msgstr ""

#. Tag: para
#: Security.xml:4474
#, no-c-format
msgid ""
"With this configuration, OpenID support is available to your application. "
"The OpenID support component, <literal>org.jboss.seam.security.openid."
"openid</literal>, is installed automatically if the openid4java classes are "
"on the classpath."
msgstr ""

#. Tag: title
#: Security.xml:4482
#, fuzzy, no-c-format
msgid "Presenting an OpenIdDLogin form"
msgstr "ログインフォームの記述"

#. Tag: para
#: Security.xml:4484
#, no-c-format
msgid ""
"To initiate an OpenID login, you can present a simply form to the user "
"asking for the user's OpenID. The <literal>#{openid.id}</literal> value "
"accepts the user's OpenID and the <literal>#{openid.login}</literal> action "
"initiates an authentication request."
msgstr ""

#. Tag: programlisting
#: Security.xml:4489
#, no-c-format
msgid ""
"&lt;h:form&gt;\n"
"    &lt;h:inputText value=&quot;#{openid.id}&quot; /&gt;\n"
"    &lt;h:commandButton action=&quot;#{openid.login}&quot; value=&quot;"
"OpenID Login&quot;/&gt;\n"
"&lt;/h:form&gt;"
msgstr ""

#. Tag: para
#: Security.xml:4491
#, no-c-format
msgid ""
"When the user submits the login form, he will be redirected to his OpenID "
"provider. The user will eventually return to your application through the "
"Seam pseudo-view <literal>/openid.xhtml</literal>, which is provided by the "
"<literal>OpenIdPhaseListener</literal>. Your application can handle the "
"OpenID response by means of a <literal>pages.xml</literal> navigation from "
"that view, just as if the user had never left your application."
msgstr ""

#. Tag: title
#: Security.xml:4500
#, no-c-format
msgid "Logging in immediately"
msgstr ""

#. Tag: para
#: Security.xml:4502
#, no-c-format
msgid ""
"The simplest strategy is to simply login the user immediately. The following "
"navigation rule shows how to handle this using the <literal>#{openid."
"loginImmediately()}</literal> action."
msgstr ""

#. Tag: programlisting
#: Security.xml:4506
#, no-c-format
msgid ""
"&lt;page view-id=&quot;/openid.xhtml&quot;&gt;\n"
"    &lt;navigation evaluate=&quot;#{openid.loginImmediately()}&quot;&gt;\n"
"        &lt;rule if-outcome=&quot;true&quot;&gt;\n"
"            &lt;redirect view-id=&quot;/main.xhtml&quot;&gt;\n"
"                &lt;message&gt;OpenID login successful...&lt;/message&gt;\n"
"            &lt;/redirect&gt;\n"
"        &lt;/rule&gt;\n"
"        &lt;rule if-outcome=&quot;false&quot;&gt;\n"
"            &lt;redirect view-id=&quot;/main.xhtml&quot;&gt;\n"
"                &lt;message&gt;OpenID login rejected...&lt;/message&gt;\n"
"            &lt;/redirect&gt;\n"
"        &lt;/rule&gt;\n"
"    &lt;/navigation&gt;\n"
"&lt;/page&gt;"
msgstr ""

#. Tag: para
#: Security.xml:4508
#, no-c-format
msgid ""
"Thie <literal>loginImmediately()</literal> action checks to see if the "
"OpenID is valid. If it is valid, it adds an OpenIDPrincipal to the identity "
"component, marks the user as logged in (i.e. <literal>#{identity.loggedIn}</"
"literal> will be true) and returns true. If the OpenID was not validated, "
"the method returns false, and the user re-enters the application un-"
"authenticated. If the user's OpenID is valid, it will be accessible using "
"the expression <literal>#{openid.validatedId}</literal> and <literal>#"
"{openid.valid}</literal> will be true."
msgstr ""

#. Tag: title
#: Security.xml:4519
#, no-c-format
msgid "Deferring login"
msgstr ""

#. Tag: para
#: Security.xml:4521
#, no-c-format
msgid ""
"You may not want the user to be immediately logged in to your application. "
"In that case, your navigation should check the <literal>#{openid.valid}</"
"literal> property and redirect the user to a local registration or "
"processing page. Actions you might take would be asking for more information "
"and creating a local user account or presenting a captcha to avoid "
"programmatic registrations. When you are done processing, if you want to log "
"the user in, you can call the <literal>loginImmediately</literal> method, "
"either through EL as shown previously or by directly interaction with the "
"<literal>org.jboss.seam.security.openid.OpenId</literal> component. Of "
"course, nothing prevents you from writing custom code to interact with the "
"Seam identity component on your own for even more customized behaviour."
msgstr ""

#. Tag: title
#: Security.xml:4535
#, no-c-format
msgid "Logging out"
msgstr ""

#. Tag: para
#: Security.xml:4537
#, no-c-format
msgid ""
"Logging out (forgetting an OpenID association) is done by calling <literal>#"
"{openid.logout}</literal>. If you are not using Seam security, you can call "
"this method directly. If you are using Seam security, you should continue to "
"use <literal>#{identity.logout}</literal> and install an event handler to "
"capture the logout event, calling the OpenID logout method."
msgstr ""

#. Tag: programlisting
#: Security.xml:4544
#, no-c-format
msgid ""
"&lt;event type=&quot;org.jboss.seam.security.loggedOut&quot;&gt;\n"
"    &lt;action execute=&quot;#{openid.logout}&quot; /&gt;\n"
"&lt;/event&gt;"
msgstr ""

#. Tag: para
#: Security.xml:4546
#, no-c-format
msgid ""
"It's important that you do not leave this out or the user will not be able "
"to login again in the same session."
msgstr ""
