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.