It is certainly true of the Google team that we tried to optimize the UI for non-OpenID-savvy users (which will be the vast majority in our case). It is also true that we thought we were fully compliant with the AX spec. To put it another way, RPs that &#39;break&#39; as a result of our behavior would be in violation of the AX spec as currently written.<br>
<br><div class="gmail_quote">On Fri, Apr 3, 2009 at 4:08 PM, John Bradley <span dir="ltr">&lt;<a href="mailto:john.bradley@wingaa.com">john.bradley@wingaa.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
In fairness google is interpreting required as required.<br>
<br>
The issue is that they are treating optional as ignored to simplify the UX.<br>
<br>
Any number of OPs allow you to customize persona, for Sreg and AX.<br>
<br>
I have no problem with OPs targeting there services to different audiences.<br>
<br>
I suspect that PIP knows that there users are more sophisticated or at-least wanted an openID or they wouldn&#39;t have signed up.<br>
<br>
Google on the other hand has to support people who have never been exposed to openID and just clicked on a button at Plaxo or someplace.<br>
<br>
I am not saying that PIP and Google could or should have the same UX.<br>
<br>
Only that RP&#39;s need a consistent response across all OPs for AX requests otherwise they have no reason to adopt it.<br>
<br>
One of the areas where I don&#39;t currently have a AX test is for the behavior of an OP when it doesn&#39;t have a required attribute.<br>
<br>
If we look at the spec:<br>
------<br>
openid.ax.required<br>
Value: an attribute alias, or a list of aliases corresponding to the URIs defined by &quot;openid.ax.type.&lt;alias&gt;&quot; parameters. Multiple attribute aliases are separated with a comma, &quot;,&quot;.<br>
<br>
By requesting attributes using this field, a hint is sent to the OP about the RP&#39;s requirements for offering certain functionality and should be used by the OP to help the user decide what attributes to release. RP&#39;s requirements should not be enforced by the OP.<br>

<br>
The RP should offer, out of band of attribute exchange, an alternate method of collecting the attributes it needs, if they weren&#39;t obtained via attribute exchange.<br>
<br>
openid.ax.if_available<br>
Value: an attribute alias, or a list of aliases corresponding to the URIs defined by &quot;openid.ax.type.&lt;alias&gt;&quot; parameters. Multiple attribute aliases are separated with a comma, &quot;,&quot;.<br>
<br>
Attributes requested using this field are deemed optional by the RP; the RP should be able to complete the interaction with the user even if values are not provided by the OP for the optional attributes.<br>
<br>
---------<br>
<br>
It is clear that the RP can expect to get a response back and continue the transaction if the OP doesn&#39;t provide the value.<br>
<br>
On the other hand the language for required was written by a politician.  A hint that the RP may not provide certain functionality without the value.<br>
<br>
Is certain functionality declining the login or making the user manually input a email to verify?<br>
<br>
I can read Googles interpretation  into the above spec however that is clearly not how others interpret it.<br>
<br>
If I were to read the spec on its own as an OP I would probably come to the conclusion that what I need is an interface that shows the RP has requested:<br>
1. A set of information that is purely optional and they will provide service even if the information is not provided.<br>
2. A set of information that the RP may restrict or deny service if I don&#39;t provide.<br>
<br>
I let the user select or deselect any of there available attributes and send back a positive response unless the user decides to cancel the login.<br>
This includes not sending back required attributes.<br>
<br>
The RP is guaranteed to get a response and needs to figure out what to do with the user as a result of that.<br>
<br>
I don&#39;t think anyone is exactly following my reading mostly because they are looking at the name openid.ax.required and not the normative text.<br>
<br>
Until there is a  consensus around the user level flow for AX it is hard for me to crate more detailed tests or even determine success of failure of anything above the protocol layer.<br>
<br>
Regards<br><font color="#888888">
John Bradley</font><div><div></div><div class="h5"><br>
On 3-Apr-09, at 3:01 PM, Deron Meranda wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Fri, Apr 3, 2009 at 3:50 PM, John Bradley &lt;<a href="mailto:john.bradley@wingaa.com" target="_blank">john.bradley@wingaa.com</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I will grant you that the choice google has made to deny returning optional<br>
claims to the RP without a user dialog makes the UI simpler.<br>
The problem for RPs is that they may still be willing to accept the login<br>
without the email and collect or verify the email in some other manner.<br>
</blockquote>
<br>
Yes, this is exactly the &quot;problem&quot; I have with Google&#39;s way of interpreting<br>
optional to mean required.  It&#39;s not optional for the user, it&#39;s optional<br>
for Google.<br>
<br>
<br>
Another slight annoyance, perhaps specific to Google, is that even if I have<br>
it return an email address, I don&#39;t get to pick it.<br>
<br>
Basically, any Google account can have a lot of different email addresses.<br>
First, you can just add or remove periods (dots) where-ever<br>
  <a href="http://mail.google.com/support/bin/answer.py?hl=en&amp;answer=10313#" target="_blank">http://mail.google.com/support/bin/answer.py?hl=en&amp;answer=10313#</a><br>
or you can also make up address aliases<br>
 <a href="http://mail.google.com/support/bin/answer.py?answer=12096&amp;topic=13271" target="_blank">http://mail.google.com/support/bin/answer.py?answer=12096&amp;topic=13271</a><br>
<br>
I may want to give out my primary address for my bank&#39;s blog,<br>
but a different one for my neighbor&#39;s.<br>
<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
>From a RP point of view OP&#39;s dealing with AX requests in a consistent way is<br>
a requirement.<br>
</blockquote>
<br>
Agree.<br>
<br>
Some OPs like Verisign PIP let me customize my attribute return<br>
values (albeit SREG rather than AX) almost to the extreme opposite of<br>
Google: per-RP answers, multiple AX profiles for default answers, etc.<br>
<br>
-- <br>
Deron Meranda<br>
</blockquote>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>--Breno<br><br>+1 (650) 214-1007 desk<br>+1 (408) 212-0135 (Grand Central)<br>MTV-41-3 : 383-A <br>PST (GMT-8) / PDT(GMT-7)<br>