[Openid-specs-ab] The other JSS envelope structure

nara hideki hdknr at ic-tact.co.jp
Tue Oct 5 15:40:59 UTC 2010


Hi, Nat,

This revision of envelope is literally "envelope" in which parameters
in concern are held as JSON object in "payload".
But it looks more simpler to me if all signing parameters are held as
a JSON object in the concerned data.  I mean that the following sample
:

{
    "type": "http://jsonenc.info/jss/",
    "sig_params": [
        {
            "key_id": "example.com",
            "algorithm": "HMAC-SHA256"
        }
    ],
    "payload": {
        "oauth_token": "asdfjklsdfjwoIjfk",
        "not_after": 12345678,
        "user_id": 1223,
        "profile_id": 1223
    }
}

can be simplified in this JSON:

{
    "oauth_token": "asdfjklsdfjwoIjfk",
    "not_after": 12345678,
    "user_id": 1223,
    "profile_id": 1223 ,
    "env" :
    {
        "type": "http://jsonenc.info/jss/",
        "sig_params": [
            {
                "key_id": "example.com",
                "algorithm": "HMAC-SHA256"
            }
        ]
    }
}

because if the original parameters without a signature can be following :

{
    "oauth_token": "asdfjklsdfjwoIjfk",
    "not_after": 12345678,
    "user_id": 1223,
    "profile_id": 1223
}

>From the programming effort's point of view, it doesn't make any difference.
But JSON text looks simpler.

We don't have to define holding parameter name as "env" because JSS
JSON object MUST have
"type". In Python, this code can be tell whether a JSON is JSS-envloped or not:

>>> j=simplejson.loads( source_json_text )
>>> True in [  type(v)==dict and v.has_key('type') and v['type'] == "http://jsonenc.info/jss/" for k,v in j.iteritems()]
True

A drawback is a fact that "env" dosen't look literally an envelope.

---
hideki


More information about the Openid-specs-ab mailing list