You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »


The Grouper VOOT Connector is a jar plugin for the Grouper WS which implements the VOOT protocol specification. VOOT is a protocol for exchanging group information externally to applications, defined within the GN3 JRA3 T2 (Identity Federations Task).

The plugin developed for Grouper implements the version 0.9 of the VOOT protocol, you can find detailed scecification at the Terena wiki page.
More recent versions of the protocol are still under definition phase, for an update on advancements you can refer to the VOOT specification github project.

Note: only the REST operations are implemented, not the OAuth 2.0. VOOT also described an authentication process based on OAuth.
This implementation inside Grouper delegates authentication to anything already implemented for Grouper WS and is pluggable in the same way that Grouper WS is. You can easily implement servlet container or web server basic auth without any effort.  If someone has an OAuth 2.0 VOOT consumer and wants to work with the Grouper team to make OAuth 2.0 work with this plugin, let the Grouper team know.

This is currently running on the Grouper Demo Server.

Calls

The voot protocol defines two different sets of calls that can be made to a Grouper server: retrieve group membership and retrieve members of a group.

Retrieve Group Membership: 

This call retrieves a list of groups the user is a member of:

or

where {{userId}} is replaced with an idenfier of the user at the provider.
The response can include the following keys:

  • (REQUIRED) id: The, to the provider, local unique identifier of the group;
  • (REQUIRED) voot_membership_role: The role the user has in this group;
  • (OPTIONAL) title: The short human readable name of the group;
  • (OPTIONAL) description: A description of the group.

The id field SHOULD be opaque to the client. The field voot_membership_role can be any of these values: admin, manager or member.

Retrieve Members of a Group: 

This call retrieves a list of all members of a group the user is a member of:

or

Where userId is replaced with an identifier of the user at the provider and groupId is replaced with a group identifier which was obtained through for instance the call used to retrieve group membership for a particular user.
The response can include the following keys:

  • (REQUIRED) id: The, to the provider, local unique identifier of the user;
  • (OPTIONAL) displayName: The name by which the user prefers to be addressed;
  • (OPTIONAL) voot_membership_role: The role the user has in this group;
  • (OPTIONAL) emails: The email address(es) of the user;

The id field SHOULD be opaque to the client. The field voot_membership_role can be any of these values: admin, manager or member. The user MUST be a member, but not necessary have the role member of the group being queried. The emails field SHOULD contain a list of email addresses which provides the type to be any of work, home or other.
This call retrieves a list of groups the user is a member of:
/groups/@me
or
/groups/userId
Where {{
Unknown macro:

Unknown macro: {userId}

}} is replaced with an idenfier of the user at the provider. This
call MUST be supported. The response can include the following keys:
(REQUIRED) id: The, to the provider, local unique identifier of the group;
(REQUIRED) voot_membership_role: The role the user has in this group;
(OPTIONAL) title: The short human readable name of the group;
(OPTIONAL) description: A description of the group.
The id field SHOULD be opaque to the client. The field voot_membership_role 
can be any of these values: admin, manager or member.
Retrieve Members of a Group

Mappings

  • The voot Group ID is the grouper group system name
  • The voot Group Name is the grouper group display name
  • The voot Group description is the grouper group description
  • The voot person email maps to the subject attribute name in the sources.xml file identified by emailAttributeName
  • The voot person id is the subject id
  • The voot person displayName is the subject name
  • The voot member admin role maps to the group admin privilege (note, if they are a grouper admin, they are also a member of the group)
  • The voot member manager role maps to the group update privilege (note, if they are a grouper update, they are also a member of the group)
  • The voot member member role maps to the group members list

Grouper extensions

  • If you pass in the request parameter indentResponse=true, then the resulting json will be indented

Examples

Ask the Grouper team for a user/pass to the grouper demo WS (currently basic auth via apache)

https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/voot/groups/@me?indentResponse=true

https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/voot/groups?indentResponse=true

https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/voot/people/@me?indentResponse=true

https://grouperdemo.internet2.edu/grouper-ws_v2_0_0/voot/people/@me/aStem:aGroup2?indentResponse=true

Installation

Here is the README.txt

  • No labels