<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
I'm good with adding an additional error response, I just like
"authentication_failed" much better than something that indicated
part of the authentication succeeded and part failed. Just being
generic and saying that authentication failed still allows the
client to try a different set of ACR values if it wants and it
doesn't leak anything to the attacker (e.g. the password you gave is
good, just not the second factor).<br>
<br>
Thanks,<br>
George<br>
<br>
<div class="moz-cite-prefix">On 6/5/18 4:13 PM, Phil Hunt wrote:<br>
</div>
<blockquote type="cite"
cite="mid:62B939E6-4392-4DC6-8731-7314F377D2B9@oracle.com">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
I think I see now…the last sentence isn’t clear on *how* the AS/OP
treats the authen as failed.
<div class=""> <br class="">
<div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; word-spacing: 0px;
-webkit-text-stroke-width: 0px; word-wrap: break-word;
-webkit-nbsp-mode: space; -webkit-line-break:
after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; word-spacing: 0px;
-webkit-text-stroke-width: 0px; word-wrap: break-word;
-webkit-nbsp-mode: space; -webkit-line-break:
after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal;
text-align: start; text-indent: 0px; text-transform:
none; white-space: normal; word-spacing: 0px;
-webkit-text-stroke-width: 0px; word-wrap: break-word;
-webkit-nbsp-mode: space; -webkit-line-break:
after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal;
text-align: start; text-indent: 0px; text-transform:
none; white-space: normal; word-spacing: 0px;
-webkit-text-stroke-width: 0px; word-wrap: break-word;
-webkit-nbsp-mode: space; -webkit-line-break:
after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing:
normal; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
word-wrap: break-word; -webkit-nbsp-mode: space;
-webkit-line-break: after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing:
normal; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
word-wrap: break-word; -webkit-nbsp-mode: space;
-webkit-line-break: after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing:
normal; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal;
word-spacing: 0px; -webkit-text-stroke-width:
0px; word-wrap: break-word; -webkit-nbsp-mode:
space; -webkit-line-break: after-white-space;"
class="">
<div style="color: rgb(0, 0, 0); letter-spacing:
normal; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal;
word-spacing: 0px; -webkit-text-stroke-width:
0px; word-wrap: break-word; -webkit-nbsp-mode:
space; -webkit-line-break: after-white-space;"
class="">
<div style="color: rgb(0, 0, 0);
letter-spacing: normal; text-align: start;
text-indent: 0px; text-transform: none;
white-space: normal; word-spacing: 0px;
-webkit-text-stroke-width: 0px; word-wrap:
break-word; -webkit-nbsp-mode: space;
-webkit-line-break: after-white-space;"
class="">
<div style="color: rgb(0, 0, 0);
letter-spacing: normal; text-align: start;
text-indent: 0px; text-transform: none;
white-space: normal; word-spacing: 0px;
-webkit-text-stroke-width: 0px; word-wrap:
break-word; -webkit-nbsp-mode: space;
-webkit-line-break: after-white-space;"
class="">
<div style="color: rgb(0, 0, 0);
letter-spacing: normal; text-align:
start; text-indent: 0px; text-transform:
none; white-space: normal; word-spacing:
0px; -webkit-text-stroke-width: 0px;
word-wrap: break-word;
-webkit-nbsp-mode: space;
-webkit-line-break: after-white-space;"
class="">
<div style="color: rgb(0, 0, 0);
letter-spacing: normal; text-align:
start; text-indent: 0px;
text-transform: none; white-space:
normal; word-spacing: 0px;
-webkit-text-stroke-width: 0px;
word-wrap: break-word;
-webkit-nbsp-mode: space;
-webkit-line-break:
after-white-space;" class="">
<div class=""><span
class="Apple-style-span"
style="border-collapse: separate;
line-height: normal;
border-spacing: 0px;">
<div class="" style="word-wrap:
break-word; -webkit-nbsp-mode:
space; -webkit-line-break:
after-white-space;">
<div class="">
<div class="">
<div class="">Phil</div>
<div class=""><br class="">
</div>
<div class="">Oracle
Corporation, Identity
Cloud Services Architect</div>
<div class="">@independentid</div>
<div class=""><a
href="http://www.independentid.com"
class=""
moz-do-not-send="true">www.independentid.com</a></div>
</div>
</div>
</div>
</span><a
href="mailto:phil.hunt@oracle.com"
class="" style="orphans: 2;
widows: 2;" moz-do-not-send="true">phil.hunt@oracle.com</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">On Jun 5, 2018, at 1:09 PM, Torsten
Lodderstedt <<a href="mailto:torsten@lodderstedt.net"
class="" moz-do-not-send="true">torsten@lodderstedt.net</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode:
space; line-break: after-white-space;" class=""><br
class="">
<br class="">
<blockquote type="cite" class="">Am 04.06.2018 um 18:42
schrieb Phil Hunt <<a
href="mailto:phil.hunt@oracle.com" class=""
moz-do-not-send="true">phil.hunt@oracle.com</a>>:<br
class="">
<br class="">
I seem to recall Mike indicating that just because the
OP could not meet the ACR requested, the RP/Client may
still choose to accept the authentication at some
reduced or alternate set of methods. IOW a fail to
meet the ACR is not necessarily a fail.<br class="">
</blockquote>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
That’s correct - if the acr claim was not requested as
essential claim.
<div class=""><br class="">
</div>
<div class="">For your convenience, here is the
respective spec text again: <br class="">
<div class=""><br class="">
</div>
<div class="">"If the acr Claim is requested as an
Essential Claim for the ID Token with<br class="">
a values parameter requesting specific
Authentication Context Class<br class="">
Reference values and the implementation supports the
claims parameter, the<br class="">
Authorization Server MUST return an acr Claim Value
that matches one of the<br class="">
requested values. The Authorization Server MAY ask
the End-User to<br class="">
re-authenticate with additional factors to meet this
requirement. <b class="">If this<br class="">
is an Essential Claim and the requirement cannot
be met, then the<br class="">
Authorization Server MUST treat that outcome as a
failed authentication<br class="">
attempt</b>."</div>
<div class=""><br class="">
</div>
<div class="">I personally think the spec lacks an
suitable error definition. <span class="Apple-tab-span" style="white-space:pre"> </span></div>
<div class=""><br class="">
<blockquote type="cite" class=""><br class="">
That said, no authentication at all should lead to
an access_denied error at minimum.<br class="">
<br class="">
Phil<br class="">
<br class="">
Oracle Corporation, Identity Cloud Services
Architect<br class="">
@independentid<br class="">
<a href="http://www.independentid.com/" class=""
moz-do-not-send="true">www.independentid.com</a><br
class="">
<a href="mailto:phil.hunt@oracle.com" class=""
moz-do-not-send="true">phil.hunt@oracle.com</a><br
class="">
<br class="">
<blockquote type="cite" class="">On Jun 4, 2018,
at 9:34 AM, Torsten Lodderstedt
<a class="moz-txt-link-rfc2396E" href="mailto:torsten@lodderstedt.net"><torsten@lodderstedt.net></a> wrote:<br
class="">
<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">Am 01.06.2018
um 19:39 schrieb George Fletcher
<a class="moz-txt-link-rfc2396E" href="mailto:gffletch@aol.com"><gffletch@aol.com></a>:<br class="">
<br class="">
I think I'd prefer either 'access_denied' as
defined by RFC 6749 or an
'authentication_failed' error that is a little
more generic than
'unable_to_meet_authentication_requirements'
which I feel is leaking aspects of
the authentication that shouldn't be exposed
to the client.<br class="">
</blockquote>
<br class="">
Take into account the RP asked for a certain
ACR, which the OP was unable to comply with. <br
class="">
<blockquote type="cite" class=""><br class="">
In the you case you provided Torsten, there
isn't anything the RP can do as the user first
needs to enable 2SV on their account at the
OP.<br class="">
</blockquote>
<br class="">
It can use another OP or implement the desired
use case using local means.<br class="">
<br class="">
<blockquote type="cite" class=""><br class="">
Thanks,<br class="">
George<br class="">
<br class="">
On 5/29/18 6:06 AM, Torsten Lodderstedt via
Openid-specs-ab wrote:<br class="">
<blockquote type="cite" class="">That’s rather
tricky. The OP must use this parameter to
indicate to the RP what acr policy it
fulfilled in the respective transaction. The
value in acr is not necessarily the value
the RP asked for. But this holds only true
if the acr claim was not requested as
essential claim. In this case, the OP must
„MUST treat that outcome as a failed
authentication attempt.“ In my
interpretation, this requires the OP to send
an error response to the client, which only
carries the error data. <br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">Am
28.05.2018 um 05:29 schrieb Phil Hunt
<a class="moz-txt-link-rfc2396E" href="mailto:phil.hunt@oracle.com"><phil.hunt@oracle.com></a><br class="">
:<br class="">
<br class="">
Isn’t this what the acr response param is
for...<br class="">
<br class="">
acr<br class="">
OPTIONAL. Authentication Context Class
Reference. String specifying an
Authentication Context Class Reference
value that identifies the Authentication
Context Class that the authentication
performed satisfied. The value "0"
indicates the End-User authentication did
not meet the requirements of ISO/IEC 29115
[ISO29115] level 1. <br class="">
<br class="">
Phil<br class="">
<br class="">
On May 27, 2018, at 9:00 AM, Torsten
Lodderstedt via Openid-specs-ab <br
class="">
<a class="moz-txt-link-rfc2396E" href="mailto:openid-specs-ab@lists.openid.net"><openid-specs-ab@lists.openid.net></a><br
class="">
wrote:<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">Hi
Vladimir,<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">Am
26.05.2018 um 23:42 schrieb Vladimir
Dzhuvinov via Openid-specs-ab
<a class="moz-txt-link-rfc2396E" href="mailto:openid-specs-ab@lists.openid.net"><openid-specs-ab@lists.openid.net></a><br
class="">
:<br class="">
<br class="">
If you're looking for a standard error
code for "user failed to authenticate
(with required ACR)", access_denied
appears to be the closest and only
choice. What the RP would make of that
error code is another question :)<br
class="">
<br class="">
<a class="moz-txt-link-freetext" href="http://openid.net/specs/openid-connect-core-1_0.html#AuthError">http://openid.net/specs/openid-connect-core-1_0.html#AuthError</a><br
class="">
<br class="">
<br class="">
In practice, many OPs won't send the
browser back to the RP if the user
failed to authenticate, i.e. the
browser will remain at the login
screen, with the user given the option
for some sort of recovery and
perhaps the option to cancel the
request and return to the RP.<br
class="">
As for login_required and
interaction_required - my reading of
the spec is that these are intended
for error responses to prompt=none
authentication requests and shouldn't
be used to signal other conditions.<br
class="">
<br class="">
<a class="moz-txt-link-freetext" href="http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest">http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest</a><br
class="">
</blockquote>
That’s my problem. In my use case, the
OP is unable to meet the RP’s
requirements either entirely or for the
particular user (e.g. no second factor
available). I think stopping request
processing at the OP is not a good
option. I would like to send the user
agent back to the RP along with enough
information to act upon. My current
feeling is we need another, distinct
error code - something like
authentication_failed
or unable_to_meet_authentication_requirements.<br
class="">
<br class="">
best regards,<br class="">
Torsten. <br class="">
<br class="">
<br class="">
<blockquote type="cite" class=""><br
class="">
<blockquote type="cite" class="">none<br
class="">
The Authorization Server MUST NOT
display any authentication or
consent user interface pages. An
error is returned if an End-User is
not already authenticated or the
Client does not have pre-configured
consent for the requested Claims or
does not fulfill other conditions
for processing the request. The
error code will typically be
login_required,
interaction_required, or another
code defined in Section 3.1.2.6.
This can be used as a method to
check for existing authentication
and/or consent.<br class="">
<br class="">
</blockquote>
<br class="">
Vladimir<br class="">
<br class="">
<br class="">
On 25/05/18 18:41, Filip Skokan via
Openid-specs-ab wrote:<br class="">
<br class="">
<blockquote type="cite" class="">Depending
on the situation at the OP I believe
this could be any of (in<br class="">
order of my preference)
login_required,
interaction_required, access_denied<br
class="">
<br class="">
Best,<br class="">
*Filip Skokan*<br class="">
<br class="">
On Fri, May 25, 2018 at 4:13 PM,
Torsten Lodderstedt via
Openid-specs-ab <<br class="">
<br class="">
<br class="">
<a class="moz-txt-link-abbreviated" href="mailto:openid-specs-ab@lists.openid.net">openid-specs-ab@lists.openid.net</a><br
class="">
<blockquote type="cite" class="">wrote:<br
class="">
<br class="">
</blockquote>
<br class="">
<blockquote type="cite" class="">Hi
all,<br class="">
<br class="">
I just came across the following
text (again) in the OpenID Connect
Core<br class="">
Spec:<br class="">
<br class="">
"If the acr Claim is requested as
an Essential Claim for the ID
Token with<br class="">
a values parameter requesting
specific Authentication Context
Class<br class="">
Reference values and the
implementation supports the claims
parameter, the<br class="">
Authorization Server MUST return
an acr Claim Value that matches
one of the<br class="">
requested values. The
Authorization Server MAY ask the
End-User to<br class="">
re-authenticate with additional
factors to meet this requirement.
If this<br class="">
is an Essential Claim and the
requirement cannot be met, then
the<br class="">
Authorization Server MUST treat
that outcome as a failed
authentication<br class="">
attempt.“<br class="">
<br class="">
What error code is the OP supposed
to use to signal the failed<br
class="">
authentication to the RP?<br
class="">
<br class="">
best regards,<br class="">
Torsten.<br class="">
_______________________________________________<br class="">
<br class="">
<br class="">
</blockquote>
</blockquote>
_______________________________________________<br class="">
Openid-specs-ab mailing list<br
class="">
<br class="">
<a class="moz-txt-link-abbreviated" href="mailto:Openid-specs-ab@lists.openid.net">Openid-specs-ab@lists.openid.net</a><br
class="">
<a class="moz-txt-link-freetext" href="http://lists.openid.net/mailman/listinfo/openid-specs-ab">http://lists.openid.net/mailman/listinfo/openid-specs-ab</a><br class="">
</blockquote>
</blockquote>
</blockquote>
<br class="">
<br class="">
_______________________________________________<br class="">
Openid-specs-ab mailing list<br class="">
<br class="">
<a class="moz-txt-link-abbreviated" href="mailto:Openid-specs-ab@lists.openid.net">Openid-specs-ab@lists.openid.net</a><br class="">
<a class="moz-txt-link-freetext" href="http://lists.openid.net/mailman/listinfo/openid-specs-ab">http://lists.openid.net/mailman/listinfo/openid-specs-ab</a><br class="">
</blockquote>
<br class="">
</blockquote>
<br class="">
</blockquote>
<br class="">
</blockquote>
<br class="">
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</blockquote>
<br>
</body>
</html>