<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">As promised, Nat, John, and I spent time at the European Identity Conference (EIC) in Munich turning the decisions made at IIW into actual specification language.&nbsp; The write-up for the OpenID Connect request structure follows.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Mike<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">The OpenID Request object is used to provide OpenID request parameters that differ from the default ones.&nbsp; Implementing support for the OpenID Request object is OPTIONAL.&nbsp; Supporting it is necessary for implementations that need to request
 or provide sets of claims other than the default UserInfo claim set.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">If present, the OpenID Request object is passed as the value of a &quot;req=&quot; OAuth 2.0 parameter and is represented as a JWT.&nbsp; Parameters that affect the information returned from the UserInfo Endpoint are in the &quot;inf&quot; member.&nbsp; Parameters that
 affect the information returned in the OpenID Token are in the &quot;oit&quot; member.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">An example an OpenID request object is as follows:<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">{<o:p></o:p></p>
<p class="MsoNormal">&nbsp; &quot;inf&quot;:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;clm&quot;:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;name&quot;: null,<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;displayName&quot;: {&quot;opt&quot;: true},<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;emails&quot;: null,<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;photos&quot;: {&quot;opt&quot;: true},<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;fmt&quot;: &quot;sig&quot;<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p class="MsoNormal">&nbsp; &quot;oit&quot;:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;clm&quot;:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;aat&quot;: null<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;mxa&quot;: 86400<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">The OpenID Request object is a JWT that MAY contain a set of members defined by this specification and MAY contain other members that are not defined by this specification.&nbsp; The JWT MAY be signed or MAY by unsigned by using the JWT &quot;sig&quot;:&quot;none&quot;
 convention in the header.&nbsp; The members defined by this specification are:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;inf&quot; (UserInfo Endpoint request):&nbsp; Requests affecting the values to be returned from the UserInfo Endpoint.&nbsp; (OPTIONAL)&nbsp; If not present, the UserInfo Endpoint behaves in the default manner.<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;oit&quot; (OpenID Token request):&nbsp; Requests affecting the values to be included in the OpenID Token.&nbsp; (OPTIONAL)&nbsp; If not present, the default OpenID Token contents are used.&nbsp; If present, these parameters are used to request deltas
 to the default contents of the OpenID Token.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">If signed, the OpenID Request object SHOULD contain the standard JWT &quot;iss&quot; and &quot;aud&quot; claims.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">The structure of the &quot;inf&quot; (UserInfo Endpoint request) member is a JSON object that MAY contain the following members:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;clm&quot; (requested claims):&nbsp; Set of requested claims from the UserInfo Endpoint.&nbsp; (OPTIONAL)&nbsp; If not present, the default UserInfo claims held by the IdP are returned.<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;fmt&quot; (format):&nbsp; The requested format for the UserInfo Endpoint information.&nbsp; (OPTIONAL)&nbsp; If not present, the format is an unsigned JSON object.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">The &quot;clm&quot; member is a JSON object with a member for each requested claim.&nbsp; The member names are the requested claim names.&nbsp; The member values may be either:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null:&nbsp; This indicates that this claim is being requested in the default manner.&nbsp; In particular, this is a required claim.<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp; or<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A JSON object:&nbsp; This is used to provide additional information about the claim being requested.&nbsp; All members of the &quot;clm&quot; object are OPTIONAL.<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The members of the JSON object value following a claim name defined by this specification are:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;opt&quot;:&nbsp; If this is an optional claim, this member's value MUST be true, else, if present, its value MUST be false, which indicates that it is a required claim.<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Other members MAY be defined to provide additional information about the requested claim.<o:p></o:p></p>
<p class="MsoNormal">If the &quot;clm&quot; member is present in the &quot;info&quot; object, the claims requested within it override the default claim set that would otherwise be returned from the UserInfo Endpoint.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">The &quot;fmt&quot; member of the &quot;inf&quot; object is used to specify the requested format of the UserInfo Endpoint contents.&nbsp; Values defined are:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;nor&quot; (normal) - in which case the contents are an unsigned JSON object<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;sig&quot; (signed) - in which case the contents are a signed JWT<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;enc&quot; (encrypted) - in which case the contents are an encrypted and signed JWT<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">All members of the &quot;inf&quot; object are OPTIONAL.&nbsp; Other members MAY be present and if so, SHOULD understood by both parties.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">The structure and function of the &quot;oit&quot; (OpenID Token request) member of the OpenID Request object is similar to that of the &quot;inf&quot; member.&nbsp; It also contains an optional &quot;clm&quot; member, with the same structure as that for the &quot;oit&quot; member.&nbsp;
 If the &quot;clm&quot; member is present in the &quot;oit&quot; object, the claims requested within it modify the default claim set that would otherwise be returned in the OpenID Token.&nbsp; Unlike for the &quot;inf&quot; member, typically these claims will augment, rather than override the
 default set.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">This claim MAY be requested in the OpenID Token by specifying it in the &quot;clm&quot; member:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;aat&quot; (authenticated at):&nbsp; Requests that the &quot;aat&quot; claim be present.&nbsp; The claim value is the number of seconds from 1970-01-01T0:0:0Z as measured in UTC until the date/time that the user authentication occurred.&nbsp; (The &quot;aat&quot;
 claim semantically corresponds to the openid.pape.auth_time response parameter.)<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">In addition to the &quot;clm&quot; member, this additional member is defined within the &quot;oit&quot; member of the OpenID Request object:
<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;mxa&quot; (max authentication age):&nbsp; (OPTIONAL)&nbsp; If the request parameter &quot;mxa&quot; is present, it specifies that the user must be actively authenticated if any present authentication is older than the specified number of seconds.&nbsp;
 (The &quot;mxa&quot; request parameter corresponds to the OpenID 2.0 openid.pape.max_auth_age request parameter.)<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">It is anticipated that additional &quot;oit&quot; parameters MAY be defined to request that additional properties hold for the authentication - for instance, that certain authentication policies be applied (in the same spirit of the OpenID 2.0 openid.pape.auth_policies
 values), or that the authentication conform to the policies defined by a specified trust framework.&nbsp; These parameters MAY be defined by extension specifications.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">All members of the &quot;oit&quot; object are OPTIONAL.&nbsp; Other members MAY be present and if so, SHOULD understood by both parties.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">All members of the OpenID Request object are OPTIONAL.&nbsp; Other members MAY be present and if so, SHOULD be understood by both parties.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>