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

Compare with Current View Page History

« Previous Version 8 Next »

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": ...

 

sdf

  • No labels