You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sm...@apache.org on 2018/07/18 18:44:17 UTC
[directory-scimple] branch develop updated: Remove Penn State -
links to Apache Directory
This is an automated email from the ASF dual-hosted git repository.
smoyer1 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/directory-scimple.git
The following commit(s) were added to refs/heads/develop by this push:
new 5594f5b Remove Penn State - links to Apache Directory
new 566fcd1 Merge branch 'develop' of github.com:apache/directory-scimple into develop
5594f5b is described below
commit 5594f5bed7edaf0bf6f8d7dc2744e11a69ed460c
Author: Steve Moyer <sm...@psu.edu>
AuthorDate: Tue Jul 17 16:20:23 2018 -0400
Remove Penn State - links to Apache Directory
---
README.md | 225 ++++++++++++++++++++++++++------------------------------------
1 file changed, 95 insertions(+), 130 deletions(-)
diff --git a/README.md b/README.md
index 2328065..3fad5cc 100644
--- a/README.md
+++ b/README.md
@@ -1,136 +1,112 @@
-# SCIM
-
-Penn State's Open Source JavaEE implementation of the Simple Cross-domain Identity
-Management (SCIM) version 2.0 specification (RFC7642, RFC7643 and RFC7644). This
-project is constructing a SCIM framework using first-principles from the released
-specifications. Much of the code is being adapted from Penn State's "Friends of
-Penn State" (FPS) implementation.
-
-## History
-
-In June of 2013, we embarked on replacing the FPS system that now serves over
-3MM non-privileged accounts. Our goals for this rewrite were to eliminate the
-redundant persistence (data was stored in both an RDBMS and LDAP) as well as
-to replace the ancient and inefficient XML-based APIs with an industry standard
-API. The SCIM specification was, at the time still almost two years away from
-being released, but even the early versions of the specification showed the
-promise of a modern API.
-
-The FPS implementation of SCIM has been in production for over two years and
-as stated above is managing over 3MM identities. The system is adding almost
-400K identities per year and uses LDAP for persistence.
-
-## Goals
-
-Now that the specification has been ratified, we're writing a generic implementation
-from first-principles with the goal of forming a community around the core
-features but allowing customization via ResourceType "providers". The modules
-that implement the specification require Java SE8. The server implementations
-require Java EE7.
-
-The goals for the project are as follows:
-
-- Declarative creation of new ResourceTypes and Extensions.
-- Example implementations of the server with various persistence paradigms.
-- Dynamic generation of the Schema and ResourceType end-points.
-- A suite of tools to allow the creation of SCIM resources that can then be
- verified against the appropriate schemas.
-- A set of verification tests to ensure the project meets the specification
- and to allow inter-operability testing.
-
-Tutorials and demonstrations
-----------------------------
-
-- [Tutorial showing how to create a SCIM server with an extension](https://www.youtube.com/watch?v=YuAOcmLYyaM) - This approximately 20 minute video provides instruction on how to create
- a SCIM server using specifying a basic ScimPerson and a simple extension.
-
-- [TIER demonstration server](https://scim.psu.edu/tier/v2) - Penn State has
- deployed a demonstration server that provides a memory-based persistence
- (reset during restarts) for the Internet2 and SCIM communities to use for
- testing purposes. This server currently implements the SCIM User resource
- with an eduPerson extension. It also implements a custom resource that
- returns a full eduPerson. Feel free to try out SCIM - here are some
- working URIs to get you started:
- - https://scim.psu.edu/tier/v2/ServiceProviderConfig
- - https://scim.psu.edu/tier/v2/ResourceTypes
- - https://scim.psu.edu/tier/v2/Schemas
- - https://scim.psu.edu/tier/v2/Users
- - https://scim.psu.edu/tier/v2/Users/1234567890
- - https://scim.psu.edu/tier/v2/EduPeople
- - https://scim.psu.edu/tier/v2/EduPeople/1234567890
-
-Example code
-------------
+# SCIMple
+
+Apache's Java EE implmentation of the [Simple Cross-domain Identity
+Management](http://www.simplecloud.info/) (SCIM) version 2.0 specfification
+as defined by the following RFCs:
+
+* [RFC7643 - SCIM: Core Schema](https://tools.ietf.org/html/rfc7643)
+
+* [RFC7644 - SCIM: Protocol](https://tools.ietf.org/html/rfc7644)
+
+* [RFC7642 - SCIM: Definitions, Overview, Concepts, and Requirements](https://tools.ietf.org/html/rfc7642)
+
+## Project
+
+Please fork this project and contribute Pull-Requests via this project's
+Github page. Issue tracking is being transitioned to the [Apache Foundation's
+Jira server](http://issues.apache.org/jira/browse/SCIMPLE).
+
+Please visit our project page at https://directory.apache.org/scimple.
+
+## Features
+
+* A full-featured Java SCIM client
+* Declarative creation of new ResourceTypes and Extensions
+* Dynamic generation of the Schema and ResourceType end-points.
+* A suite of tools to allow the creation of SCIM resources that can then be
+ verified against the appropriate schemas.
+
+## Future features
+
+* Example implementations of the server with various persistence paradigms.
+* A set of verification tests to ensure the project meets the specification
+ and to allow inter-operability testing.
+
+## Example code
Examples of the project's declarative syntax are shown below. The first example
shows how a SCIM resource is declared:
- @Data
- @EqualsAndHashCode(callSuper = true)
- @ScimResourceType(
- id = ScimUser.RESOURCE_NAME,
- name = ScimUser.RESOURCE_NAME,
- schema = ScimUser.SCHEMA_URI,
- description = "Top level ScimUser",
- endpoint = "/Users"
+```(java)
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ScimResourceType(
+ id = ScimUser.RESOURCE_NAME,
+ name = ScimUser.RESOURCE_NAME,
+ schema = ScimUser.SCHEMA_URI,
+ description = "Top level ScimUser",
+ endpoint = "/Users"
+)
+@XmlRootElement(name = ScimUser.RESOURCE_NAME)
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ScimUser extends ScimResource {
+
+ public static final String RESOURCE_NAME = "User";
+ public static final String SCHEMA_URI = "urn:ietf:params:scim:schemas:core:2.0:User";
+
+ @ScimAttribute(
+ description="A Boolean value indicating the User's administrative status.",
+ type=Type.BOOLEAN
)
- @XmlRootElement(name = ScimUser.RESOURCE_NAME)
- @XmlAccessorType(XmlAccessType.FIELD)
- public class ScimUser extends ScimResource {
-
- public static final String RESOURCE_NAME = "User";
- public static final String SCHEMA_URI = "urn:ietf:params:scim:schemas:core:2.0:User";
-
- @ScimAttribute(
- description="A Boolean value indicating the User's administrative status.",
- type=Type.BOOLEAN
- )
-
- @XmlElement(name = "active")
- Boolean active = true;
- @ScimAttribute(
- type = Type.COMPLEX,
- description="A physical mailing address for this User, as described in (address Element). Canonical Type Values of work, home, and other. The value attribute is a complex type with the following sub-attributes."
- )
- @XmlElement(name = "addresses")
- List<Address> addresses;
+ @XmlElement(name = "active")
+ Boolean active = true;
+
+ @ScimAttribute(
+ type = Type.COMPLEX,
+ description="A physical mailing address for this User, as described in (address Element). Canonical Type Values of work, home, and other. The value attribute is a complex type with the following sub-attributes."
+ )
+ @XmlElement(name = "addresses")
+ List<Address> addresses;
+```
In the example above, annotations are used at the class level and member level
to declare a new SCIM resource and its attributes respectively. The example
below shows the equivalent declaration for a resource Extension:
- @XmlRootElement
+```(java)
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.NONE)
+@ScimExtensionType(
+ required = false,
+ name = "EnterpriseUser",
+ id = EnterpriseExtension.URN,
+ description = "Attributes commonly used in representing users that belong to, or act on behalf of, a business or enterprise."
+)
+@Data
+public class EnterpriseExtension implements ScimExtension {
+
+ public static final String URN = "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";
+
+ @XmlType
@XmlAccessorType(XmlAccessType.NONE)
- @ScimExtensionType(
- required = false,
- name = "EnterpriseUser",
- id = EnterpriseExtension.URN,
- description = "Attributes commonly used in representing users that belong to, or act on behalf of, a business or enterprise."
- )
@Data
- public class EnterpriseExtension implements ScimExtension {
-
- public static final String URN = "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";
-
- @XmlType
- @XmlAccessorType(XmlAccessType.NONE)
- @Data
- public static class Manager {
-
- @ScimAttribute(
- description = "The \"id\" of the SCIM resource representing the user's manager. RECOMMENDED."
- )
-
- @XmlElement
- private String value;
+ public static class Manager {
+
+ @ScimAttribute(
+ description = "The \"id\" of the SCIM resource representing the user's manager. RECOMMENDED."
+ )
- @ScimAttribute(
- description = "The URI of the SCIM resource representing the User's manager. RECOMMENDED."
- )
-
- @XmlElement
- private String $ref;
+ @XmlElement
+ private String value;
+
+ @ScimAttribute(
+ description = "The URI of the SCIM resource representing the User's manager. RECOMMENDED."
+ )
+
+ @XmlElement
+ private String $ref;
+```
This example shows how an extension is declared at the class level, but also
provides an example of how complex SCIM types can be simply defined as
@@ -146,14 +122,3 @@ retrieve, update and delete methods (as well as find). Customization is
flexible - if your system implements soft deletes, create a delete method that
simply sets a flag and alter the find and retrieve methods to only return
"undeleted" resources.
-
- @Inject
- EndpointUtil endpointUtil;
- .....
- .....
- URL groupEndpoint = endpointUtil.getEndpoint(ScimGroup.class);
- URL userEndpoint = endpointUtil.getEndpoint(ScimUser.class);
-
-With reference type returns developers may need to access the base endpoints used to execute the SCIM request.
-The example above illustrates injecting an endpointUtil class, which is a helper class that provides that specific
-information. If this identity provider does not provide a a provisioner for the endpoint requested null is returned.