Skip to content
This repository was archived by the owner on Aug 23, 2023. It is now read-only.

Commit 576a489

Browse files
committed
Updates to add/update content and improve structure and formatting
1 parent 5a5015a commit 576a489

8 files changed

+368
-93
lines changed

src/main/doc/authenticationMechanism.asciidoc

Lines changed: 37 additions & 25 deletions
Large diffs are not rendered by default.

src/main/doc/bibliography.asciidoc

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
////
2+
//
3+
// ORACLE AMERICA, INC. IS WILLING TO LICENSE THIS SPECIFICATION TO YOU ONLY UPON THE
4+
// CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS LICENSE AGREEMENT
5+
// ("AGREEMENT"). PLEASE READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY. BY
6+
// DOWNLOADING THIS SPECIFICATION, YOU ACCEPT THE TERMS AND CONDITIONS OF THIS AGREEMENT.
7+
// IF YOU ARE NOT WILLING TO BE BOUND BY THEM, SELECT THE "DECLINE" BUTTON AT THE BOTTOM OF
8+
// THIS PAGE AND THE DOWNLOADING PROCESS WILL NOT CONTINUE.
9+
//
10+
// Specification: JSR-375 Java EE Security API ("Specification")
11+
// Version: 1.0
12+
// Status: Proposed Final Draft
13+
// Release: July 2017
14+
//
15+
// Copyright 2017 Oracle America, Inc.
16+
// 500 Oracle Parkway, Redwood City, California 94065, U.S.A.
17+
//
18+
// All rights reserved.
19+
//
20+
// NOTICE
21+
// The Specification is protected by copyright and the information described therein may be protected by
22+
// one or more U.S. patents, foreign patents, or pending applications. Except as provided under the
23+
// following license, no part of the Specification may be reproduced in any form by any means without the
24+
// prior written authorization of Oracle America, Inc. ("Oracle") and its licensors, if any. Any use of the
25+
// Specification and the information described therein will be governed by the terms and conditions of this
26+
// Agreement.
27+
//
28+
// Subject to the terms and conditions of this license, including your compliance with Paragraphs 1 and 2
29+
// below, Oracle hereby grants you a fully-paid, non-exclusive, non-transferable, limited license (without
30+
// the right to sublicense) under Oracle's intellectual property rights to:
31+
//
32+
// 1.Review the Specification for the purposes of evaluation. This includes: (i) developing implementations
33+
// of the Specification for your internal, non-commercial use; (ii) discussing the Specification with any third
34+
// party; and (iii) excerpting brief portions of the Specification in oral or written communications which
35+
// discuss the Specification provided that such excerpts do not in the aggregate constitute a significant
36+
// portion of the Technology.
37+
//
38+
// 2.Distribute implementations of the Specification to third parties for their testing and evaluation use,
39+
// provided that any such implementation:
40+
// (i) does not modify, subset, superset or otherwise extend the Licensor Name Space, or include any
41+
// public or protected packages, classes, Java interfaces, fields or methods within the Licensor Name Space
42+
// other than those required/authorized by the Specification or Specifications being implemented;
43+
// (ii) is clearly and prominently marked with the word "UNTESTED" or "EARLY ACCESS" or
44+
// "INCOMPATIBLE" or "UNSTABLE" or "BETA" in any list of available builds and in proximity to every link
45+
// initiating its download, where the list or link is under Licensee's control; and
46+
// (iii) includes the following notice:
47+
// "This is an implementation of an early-draft specification developed under the Java Community Process
48+
// (JCP) and is made available for testing and evaluation purposes only. The code is not compatible with
49+
// any specification of the JCP."
50+
//
51+
// The grant set forth above concerning your distribution of implementations of the specification is
52+
// contingent upon your agreement to terminate development and distribution of your "early draft"
53+
// implementation as soon as feasible following final completion of the specification. If you fail to do so,
54+
// the foregoing grant shall be considered null and void.
55+
//
56+
// No provision of this Agreement shall be understood to restrict your ability to make and distribute to
57+
// third parties applications written to the Specification.
58+
//
59+
// Other than this limited license, you acquire no right, title or interest in or to the Specification or any
60+
// other Oracle intellectual property, and the Specification may only be used in accordance with the license
61+
// terms set forth herein. This license will expire on the earlier of: (a) two (2) years from the date of
62+
// Release listed above; (b) the date on which the final version of the Specification is publicly released; or
63+
// (c) the date on which the Java Specification Request (JSR) to which the Specification corresponds is
64+
// withdrawn. In addition, this license will terminate immediately without notice from Oracle if you fail to
65+
// comply with any provision of this license. Upon termination, you must cease use of or destroy the
66+
// Specification.
67+
//
68+
// "Licensor Name Space" means the public class or interface declarations whose names begin with "java",
69+
// "javax", "com.oracle" or their equivalents in any subsequent naming convention adopted by Oracle
70+
// through the Java Community Process, or any recognized successors or replacements thereof
71+
//
72+
// TRADEMARKS
73+
// No right, title, or interest in or to any trademarks, service marks, or trade names of Oracle or Oracle's
74+
// licensors is granted hereunder. Oracle, the Oracle logo, and Java are trademarks or registered
75+
// trademarks of Oracle America, Inc. in the U.S. and other countries.
76+
//
77+
// DISCLAIMER OF WARRANTIES
78+
// THE SPECIFICATION IS PROVIDED "AS IS" AND IS EXPERIMENTAL AND MAY CONTAIN DEFECTS OR
79+
// DEFICIENCIES WHICH CANNOT OR WILL NOT BE CORRECTED BY ORACLE. ORACLE MAKES NO
80+
// REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO,
81+
// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT
82+
// THAT THE CONTENTS OF THE SPECIFICATION ARE SUITABLE FOR ANY PURPOSE OR THAT ANY PRACTICE
83+
// OR IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
84+
// COPYRIGHTS, TRADE SECRETS OR OTHER RIGHTS. This document does not represent any commitment to
85+
// release or implement any portion of the Specification in any product.
86+
//
87+
// THE SPECIFICATION COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS. CHANGES
88+
// ARE PERIODICALLY ADDED TO THE INFORMATION THEREIN; THESE CHANGES WILL BE INCORPORATED
89+
// INTO NEW VERSIONS OF THE SPECIFICATION, IF ANY. ORACLE MAY MAKE IMPROVEMENTS AND/OR
90+
// CHANGES TO THE PRODUCT(S) AND/OR THE PROGRAM(S) DESCRIBED IN THE SPECIFICATION AT ANY
91+
// TIME. Any use of such changes in the Specification will be governed by the then-current license for the
92+
// applicable version of the Specification.
93+
//
94+
// LIMITATION OF LIABILITY
95+
// TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ORACLE OR ITS LICENSORS BE LIABLE FOR
96+
// ANY DAMAGES, INCLUDING WITHOUT LIMITATION, LOST REVENUE, PROFITS OR DATA, OR FOR SPECIAL,
97+
// INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS
98+
// OF THE THEORY OF LIABILITY, ARISING OUT OF OR RELATED TO ANY FURNISHING, PRACTICING,
99+
// MODIFYING OR ANY USE OF THE SPECIFICATION, EVEN IF ORACLE AND/OR ITS LICENSORS HAVE BEEN
100+
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
101+
//
102+
// You will hold Oracle (and its licensors) harmless from any claims based on your use of the Specification
103+
// for any purposes other than the limited right of evaluation as described above, and from any claims that
104+
// later versions or releases of any Specification furnished to you are incompatible with the Specification
105+
// provided to you under this license.
106+
//
107+
// RESTRICTED RIGHTS LEGEND
108+
// If this Software is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime
109+
// contractor or subcontractor (at any tier), then the Government's rights in the Software and
110+
// accompanying documentation shall be only as set forth in this license; this is in accordance with 48
111+
// C.F.R. 227.7201 through 227.7202-4 (for Department of Defense (DoD) acquisitions) and with 48 C.F.R.
112+
// 2.101 and 12.212 (for non-DoD acquisitions).
113+
//
114+
// REPORT
115+
// You may wish to report any ambiguities, inconsistencies or inaccuracies you may find in connection with
116+
// your evaluation of the Specification ("Feedback"). To the extent that you provide Oracle with any
117+
// Feedback, you hereby: (i) agree that such Feedback is provided on a non-proprietary and non-
118+
// confidential basis, and (ii) grant Oracle a perpetual, non-exclusive, worldwide, fully paid-up, irrevocable
119+
// license, with the right to sublicense through multiple levels of sublicensees, to incorporate, disclose, and
120+
// use without limitation the Feedback for any purpose related to the Specification and future versions,
121+
// implementations, and test suites thereof.
122+
//
123+
// GENERAL TERMS
124+
// Any action related to this Agreement will be governed by California law and controlling U.S. federal law.
125+
// The U.N. Convention for the International Sale of Goods and the choice of law rules of any jurisdiction
126+
// will not apply.
127+
//
128+
// The Specification is subject to U.S. export control laws and may be subject to export or import
129+
// regulations in other countries. Licensee agrees to comply strictly with all such laws and regulations and
130+
// acknowledges that it has the responsibility to obtain such licenses to export, re-export or import as may
131+
// be required after delivery to Licensee.
132+
//
133+
// This Agreement is the parties' entire agreement relating to its subject matter. It supersedes all prior or
134+
// contemporaneous oral or written communications, proposals, conditions, representations and
135+
// warranties and prevails over any conflicting or additional terms of any quote, order, acknowledgment,
136+
// or other communication between the parties relating to its subject matter during the term of this
137+
// Agreement. No modification to this Agreement will be binding, unless in writing and signed by an
138+
// authorized representative of each party.
139+
//
140+
////
141+
142+
:numbered!:
143+
["bibliography",sectnum="0"]
144+
145+
== Bibliography
146+
147+
The following documents are referenced by this specification.
148+
149+
[CDI12]::
150+
JSR-346, "Contexts and Dependency Injection for the Java EE platform", version 1.2, Maintenance Release +
151+
https://jcp.org/aboutJava/communityprocess/mrel/jsr346/index.html
152+
153+
[EL30]::
154+
JSR-341, "Expression Language", version 3.0 +
155+
https://jcp.org/aboutJava/communityprocess/final/jsr341/index.html
156+
157+
[JACC]::
158+
JSR-115, "Java Authorization Contract for Containers", version 1.5, Maintenance Release 3 +
159+
https://jcp.org/aboutJava/communityprocess/mrel/jsr115/index3.html
160+
161+
[JASPIC]::
162+
JSR-196, "Java Authentication SPI for Containers", version 1.0, Maintenance Release 2 +
163+
https://jcp.org/aboutJava/communityprocess/mrel/jsr196/index2.html
164+
165+
[RFC2119]::
166+
RFC 2119, "Key words for use in RFCs to Indicate Requirement Level" +
167+
https://tools.ietf.org/html/rfc2119
168+
169+
[RFC7617]::
170+
RFC 7617, "The 'Basic' HTTP Authentication Scheme" +
171+
https://tools.ietf.org/html/rfc7617
172+
173+
[SECAPI]::
174+
JSR-375, "Java EE Security API", version 1.0 +
175+
https://jcp.org/en/jsr/detail?id=375
176+
177+
[SERVLET31]::
178+
JSR-340, "Java Servlet Specification", version 3.1 +
179+
https://jcp.org/aboutJava/communityprocess/final/jsr340/index.html
180+
181+
[SHIROTERM]::
182+
"Apache Shiro Terminology" +
183+
https://shiro.apache.org/terminology.html
184+
185+
:numbered:

src/main/doc/concepts.asciidoc

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ This chapter overview information and terminology related to this specification,
147147

148148
=== Terminology And Acronyms
149149

150-
A common understanding of security-related terms is helpful for discussion or specification of security APIs. To that end, we incorporate by reference the excellent https://shiro.apache.org/terminology.html[Apache Shiro Terminology], and define some additional terms used in this document.
150+
A common understanding of security-related terms is helpful for discussion or specification of security APIs. To that end, we incorporate by reference the excellent Apache Shiro Terminology [https://shiro.apache.org/terminology.html[SHIROTERM]], and define some additional terms used in this document.
151151

152152
Authentication Mechanism ::
153153
The mechanism by which authentication is performed. This mechanism interacts with the caller to obtain credentials and invokes an identity store to match the given credentials with a known user (identity). If a match is found, the Authentication Mechanism uses the found identity to populate attributes (principals) to build an authenticated Subject. If a match is not found, the Authentication Mechanism reports a failed authentication, the caller is not logged in, and is unable to be given authorization.
@@ -161,8 +161,11 @@ Abbreviation for _HttpAuthenticationMechanism_, an interface defined by this spe
161161
Identity Store::
162162
An Identity Store is a component that can access application-specific security data such as users, groups, roles, and permissions. It can be thought of as a security-specific DAO (Data Access Object). Synonyms: security provider, repository, store, login module (JAAS), identity manager, service provider, relying party, authenticator, user service. Identity Stores usually have a 1-to-1 correlation with a data source such as a relational database, LDAP directory, file system, or other similar resource. As such, implementations of the _IdentityStore_ interface use data source-specific APIs to discover authorization data (roles, permissions, etc), such as JDBC, File IO, Hibernate or JPA, or any other Data Access API.
163163

164+
JACC::
165+
JSR-115, "Java Authorization Contract for Containers", version 1.5 [https://jcp.org/aboutJava/communityprocess/mrel/jsr115/index3.html[JACC]].
166+
164167
JASPIC::
165-
The Java Authentication SPI for Containers (JSR-196).
168+
JSR-196, "Java Authentication SPI for Containers", version 1.0 [https://jcp.org/aboutJava/communityprocess/mrel/jsr196/index2.html[JASPIC]].
166169

167170
SAM::
168171
Abbreviation for _ServerAuthModule_, an interface defined by JASPIC.
@@ -196,3 +199,26 @@ Because both containers and applications can have legitimate requirements for sp
196199
When both a container caller principal and an application caller principal are present, the value obtained by calling _getName()_ on both principals MUST be the same.
197200

198201
When no specific application caller principal is supplied during authentication, the caller's identity should be represented by a single principal, the container's caller principal.
202+
203+
==== Expression Language Support
204+
205+
This specification defines a number of annotations:
206+
207+
[source,java]
208+
----
209+
DatabaseIdentityStoreDefinition
210+
LdapIdentityStoreDefinition
211+
212+
BasicAuthenticationMechanismDefinition
213+
CustomFormAuthenticationMechanismDefinition
214+
FormAuthenticationMechanismDefinition
215+
216+
LoginToContinue
217+
RememberMe
218+
----
219+
220+
Attributes on these annotations can be provided either as actual values, or as Expression Language 3.0 expressions. In cases where the return type of an attribute is not String, an "EL alternative" attribute is provided, with "Expression" appended to the name. If an "EL alternative" attribute has a non-empty value, it takes precedence over the attribute it's an alternative to, and must contain a valid EL expression that evaluates to the same type as the attribute it's an alternative to.
221+
222+
For more information, see the package javadoc for the javax.security.enterprise package.
223+
224+
Expression Language 3.0 is specified by JSR-341, "Expression Language", version 3.0 [https://jcp.org/aboutJava/communityprocess/final/jsr341/index.html[EL30]]

0 commit comments

Comments
 (0)