<div dir="ltr">Thanks for the reply...some comments in-line!<br><br><div class="gmail_quote">On Fri, Aug 15, 2008 at 6:26 AM, James Henstridge <span dir="ltr">&lt;<a href="mailto:james@jamesh.id.au">james@jamesh.id.au</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;">2008/8/15 Scott Battaglia &lt;<a href="mailto:scott.battaglia@gmail.com">scott.battaglia@gmail.com</a>&gt;:<br>

<div class="Ih2E3d">&gt;&nbsp; &lt;snip /&gt;<br>
&gt;<br>
&gt; 1. Do you guys support accessing a service on behalf of a user. &nbsp;In CAS we<br>
&gt; call this proxying on behalf of the user. &nbsp;But essentially, if you&#39;re say, a<br>
&gt; portal, and you need to access the grades, you would retrieve a CAS proxy<br>
&gt; ticket and give it to the grades service which would resolve that to the<br>
&gt; user as well as the chain of where it came from.<br>
<br>
</div>There are a few models that can be used for this:<br>
<br>
1. The user goes to the grades service and requests that their data<br>
get transferred to the OpenID provider via the attribute exchange<br>
protocol. &nbsp;When they go to the portal site, the portal can request the<br>
data from the OP, again using attribute exchange.<br>
<br>
Of course, in this model there is no direct contact between the portal<br>
and grades service in this model, so the portal would need some way of<br>
verifying that the data it got was correct. &nbsp;Digital signatures are<br>
probably the answer here, but there is no standard for this yet (there<br>
was a proposal for this a while back though).</blockquote><div><br>This doesn&#39;t look like it would fit our model.&nbsp; Some of the services are purely RESTful or SOAP (and are currently designed to take CAS proxy tickets, which seem similar to OAuth...)<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
2. Use OAuth. &nbsp;The portal acquires an access token to the grades<br>
service. &nbsp;This involves sending the user to the grades service to<br>
authenticate (which might be done using OpenID). &nbsp;The portal can then<br>
use the access token to request the data directly from the grades<br>
service.</blockquote><div><br>This seems like a more viable solution.&nbsp; This is probably more of a OAuth user list question but I figure I&#39;ll check here first.&nbsp; It doesn&#39;t look like OAuth does attribute exchange, is that true?&nbsp; Or is there an extension we could use (or a standard way to add extensions).&nbsp; My guess is that would start to get a little weird because if there&#39;s no interaction then there is no way for a user to approve/deny attribute exchanges unless there&#39;s a central decision made about attribute releases (which may work for us, but probably doesn&#39;t work in a general case)<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<div class="Ih2E3d"><br>
<br>
&gt; Some of the other stuff is more related to local SSO needs than the actual<br>
&gt; protocol, but I&#39;ll ask anyway:<br>
&gt; 1. Do you support a method of determining whether someone has authenticated<br>
&gt; already (in CAS we call it gateway)? &nbsp;For us it relies on the fact that you<br>
&gt; always point to one CAS server, which obviously doesn&#39;t need to be true in<br>
&gt; the case of OpenId. &nbsp; &nbsp;However, in the scenario where you know there is only<br>
&gt; one authenticating server, is this possible?<br>
<br>
</div>If you are implementing a closed single sign-on system, you can do the<br>
following:<br>
1. Make the OpenID provider implement an identifier select endpoint.<br>
2. Make the OpenID provider automatically authenticate users who have<br>
already authenticated (perhaps just to known sites).<br>
3. For the relying party sites, if the user is unknown (according to<br>
local session cookie), begin an OpenID authentication request to the<br>
identifier select endpoint. &nbsp;The result will include the user&#39;s<br>
identity.</blockquote><div><br>The system we&#39;re building would most likely include SSO, so most of this would already happen.&nbsp; The additional thing CAS offers is that we won&#39;t force you to authenticate if you haven&#39;t already, but we will take advantage of the fact that you have if you did already (i.e. for a portal, if you haven&#39;t authenticated we&#39;ll just show a guest layout, but if you have, we&#39;ll actually display your layout). &nbsp; My guess is we&#39;ll probably have to propose our own extension for this.<br>
&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
If you are designing an open system (user can use whatever provider<br>
they want), I don&#39;t think there is an answer to this (which provider<br>
are you asking whether the user is authenticated to?).</blockquote><div><br>We&#39;re actually considering developing a two-tier system.&nbsp; Locally, we&#39;ll still be interested in using OpenId, but we&#39;d probably point all of our local apps to a central server.&nbsp; Then our central server would be able to handle local users or delegate out to other OpenId servers. <br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<div class="Ih2E3d"><br>
<br>
&gt; 2. Similar to above, we support a concept of &quot;opting-out&quot; and forcing<br>
&gt; re-authentication. &nbsp;So an application that contains SSNs may basically tell<br>
&gt; the authentication server, I don&#39;t care if they&#39;ve authenticated already, do<br>
&gt; it again.<br>
<br>
</div>The PAPE extension would be appropriate here:<br>
<br>
<a href="http://openid.net/specs/openid-provider-authentication-policy-extension-1_0-02.html" target="_blank">http://openid.net/specs/openid-provider-authentication-policy-extension-1_0-02.html</a><br>
<br>
A relying party site can ask the OP to reauthenticate the user if they<br>
were previously authenticated more than N seconds ago (N can be zero).<br>
&nbsp;Of course, there is nothing to prevent an OP from lying about<br>
reauthenticating the user. &nbsp;If that matters to you, then only accept<br>
OpenID providers you trust.<br>
<div class="Ih2E3d"><br>
<br>
&gt; The last question: &nbsp;We don&#39;t actually do this in CAS yet, but we&#39;ve seen it<br>
&gt; and a few people have asked for it. &nbsp;Is there a way to pass information<br>
&gt; along to say something like I need them to authenticate via<br>
&gt; username/password, or cert, or LOA2 or higher?<br>
<br>
</div>Again, the PAPE extension should handle this.</blockquote><div><br>PAPE does look like the way to go for these two things.&nbsp; Thanks!<br><br>-Scott<br>&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<div><div></div><div class="Wj3C7c"><br>
<br>
&gt; Thanks for any answers you guys can provide. &nbsp;We&#39;ll be continuing to do<br>
&gt; research into how OpenId2 fits into the CAS world, but I wanted to see if I<br>
&gt; could get some of these basic protocol comparison questions out of the way.<br>
<br>
<br>
</div></div><font color="#888888">James.<br>
</font></blockquote></div><br></div>