Details as to Message Format
Initial payload to look like the Grouper ESB payload.
{ "header":{ "version": "1", //Message format version "timestamp": "createtime of message", "sequence": "1", //message sequence number, integer, increments per-message //tbd -- message signature //tbd -- message body encryption //tbd -- more stuff here } "body": { "eventType": "MEMBERSHIP_ADD", "fieldName": "members", "groupId": "4854cde794b34948911bfea5b2acb611", "groupName": "atlassian:jira:jira-users", "id": "e8497c14bd6346b1aacca3ac13a25246", "membershipType": "flattened", "sequenceNumber": "388", "sourceId": "jdbc", "subjectId": "test.subject.2" } }
Version from Chris 2015/01/28
{ "version": "1", //Message format version "timestamp": "createtime of message", "sequence": "1", //message sequence number, integer, increments per-message "securityImplementation": "edu.internet2.middleware.grouperClient.messaging.security.PlainMessageSecurity", "payload": { "eventType": "MEMBERSHIP_ADD", "fieldName": "members", "groupId": "4854cde794b34948911bfea5b2acb611", "groupName": "atlassian:jira:jira-users", "id": "e8497c14bd6346b1aacca3ac13a25246", "membershipType": "flattened", "sequenceNumber": "388", "sourceId": "jdbc", "subjectId": "test.subject.2" } }
Interface for message formatting
/** * @author mchyzer * $Id$ */ package edu.internet2.middleware.grouperClient.messaging.security; import java.util.Collection; import net.sf.json.JSONObject; /** * Implement this interface to provide security on messages since in Grouper */ public interface MessageSecurity { /** * encrypt (or not) or sign or whatever * @param sendFrom * @param sendTo * @param messageContainer * @return the json object with the container, and an unencrypted payload */ public JSONObject processForSend(String sendFrom, String sendTo, JSONObject messageContainer); /** * encrypt (or not) or sign or whatever * @param sendFrom * @param sendTos * @param messageContainer * @return the json object to send */ public JSONObject processForSend(String sendFrom, Collection<String> sendTos, JSONObject messageContainer); /** * encrypt (or not) or sign or whatever * @param sendFrom * @param sendTo * @param messageContainer * @return the json object to send */ public JSONObject processForReceive(String sendFrom, String sendTo, JSONObject messageContainer); }
Example of encrypting point-to-point
{ "version": "1", //Message format version "timestamp": "createtime of message", "sequence": "1", //message sequence number, integer, increments per-message "securityImplementation": " edu.internet2.middleware.grouperClient.messaging.security.SymmetricEncryptAesCbcPkcs5PaddingMessageSecurity", "edu.internet2.middleware.grouperClient.messaging.security.SymmetricEncryptAesCbcPkcs5PaddingMessageSecurity.secretSha1First4": "c4h2", //could have message security params, and namespaced "payload": " xRnr1VN1F0kWS4uWuSpo3l75uJWI...MKx1GzN8=" }
The encrypted payload is a JSON string
{ "eventType": "MEMBERSHIP_ADD", "fieldName": ...
Basic message payload format
{ "eventType": "MEMBERSHIP_ADD", "fieldName": "members", "groupId": "4854cde794b34948911bfea5b2acb611", "groupName": "atlassian:jira:jira-users", "id": "e8497c14bd6346b1aacca3ac13a25246", "membershipType": "flattened", "sequenceNumber": "388", "sourceId": "jdbc", "subjectId": "test.subject.2" }
SCIM message proposal
{ "method": "PATCH", "resource": "/Groups/acbf3ae7-8463-4692-b4fd-9b4da3f908ce" "body": { "schemas": ["urn:scim:schemas:core:1.0"], "members": [ { "display": "Babs Jensen", "value": "pennperson:12345678", "operation": "delete" } ] } }
sdf