Re: [OAUTH-WG] Dynamic Scopes

Torsten Lodderstedt <torsten@lodderstedt.net> Thu, 28 June 2018 18:40 UTC

Return-Path: <torsten@lodderstedt.net>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9CD6C130E05 for <oauth@ietfa.amsl.com>; Thu, 28 Jun 2018 11:40:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Level:
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CrsNNm75cJIp for <oauth@ietfa.amsl.com>; Thu, 28 Jun 2018 11:40:16 -0700 (PDT)
Received: from smtprelay07.ispgateway.de (smtprelay07.ispgateway.de [134.119.228.97]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B0E74131045 for <oauth@ietf.org>; Thu, 28 Jun 2018 11:40:12 -0700 (PDT)
Received: from [177.237.72.114] (helo=[172.30.2.54]) by smtprelay07.ispgateway.de with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from <torsten@lodderstedt.net>) id 1fYbo3-0006oH-Bj; Thu, 28 Jun 2018 20:40:08 +0200
Content-Type: multipart/signed; boundary="Apple-Mail-E9ED9368-C0DB-46FB-AA62-019FADBDD561"; protocol="application/pkcs7-signature"; micalg="sha1"
Mime-Version: 1.0 (1.0)
From: Torsten Lodderstedt <torsten@lodderstedt.net>
X-Mailer: iPad Mail (15F79)
In-Reply-To: <48E721A7-E5F8-4016-83FC-9CDCA944A0AA@aol.com>
Date: Thu, 28 Jun 2018 13:37:59 -0500
Cc: Brian Campbell <bcampbell=40pingidentity.com@dmarc.ietf.org>, oauth <oauth@ietf.org>
Content-Transfer-Encoding: 7bit
Message-Id: <070AE935-F052-4587-8FF8-A306F541A2CD@lodderstedt.net>
References: <291DC85D-66B4-403F-8159-52D0091F7631@lodderstedt.net> <CA+k3eCQMCJv3NcSnBDKBUVcm131oMAdnbopSeAaD75acAqUMwg@mail.gmail.com> <b9e4115a-512d-3155-9023-604566d7190f@aol.com> <00432150-20C0-4B5F-AB4E-92F96B968A3A@lodderstedt.net> <01e15dff-2bef-831f-0b00-f64137ccc80e@aol.com> <0EF040C2-F0C2-4586-828A-A809A0373F40@lodderstedt.net> <f0d8b95a-738f-0b92-e888-6f1970048505@aol.com> <9007FECD-C700-4314-B990-3B5B5414F540@lodderstedt.net> <4cf7f274-ceb8-1734-6e83-1f83766e8061@aol.com> <C64A7845-AF59-4282-BFD4-14F5CCC42B71@lodderstedt.net> <48E721A7-E5F8-4016-83FC-9CDCA944A0AA@aol.com>
To: George Fletcher <gffletch@aol.com>
X-Df-Sender: dG9yc3RlbkBsb2RkZXJzdGVkdC5uZXQ=
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/lgKRINBQSgutkDLBkS1OKeIiq3A>
Subject: Re: [OAUTH-WG] Dynamic Scopes
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.26
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 28 Jun 2018 18:40:20 -0000

Hi George,

I‘m intrigued by the idea to encapsulate scope preparation and resource identification 
into the RS. This seems to be a viable pattern to implement transaction-oriented 
authorization.

I‘m not sure whether this justifies the implementation of UMA 2.0 in AS (additional 
grant types, claims interaction endpoint, endpoints for RS/AS interactions), 
RS and client. 

I think the basic idea could also be utilized by preparing a transaction-specific 
scope value when the client calls the RS for the first time. The client could 
then pass this value in the scope parameter as part of a standard authz code 
grant type authz request.

Does this sound reasonable?

best regards,
Torsten.

> Am 27.06.2018 um 12:13 schrieb George Fletcher <gffletch@aol.com>:
> 
> Yes, that is the basic idea and matches the UMA flow. I think some profiling of UMA is required but may be good place to start.
> 
> Thanks,
> George
> 
> --
> Identity Standards Architect
> Identity Engineering 
> Oath
> 
>> On Jun 27, 2018, at 12:22 PM, Torsten Lodderstedt <torsten@lodderstedt.net> wrote:
>> 
>> Hi George,
>> 
>> thanks a lot for investing the time to assemble this flow description!
>> 
>> If I got it right the idea is to move the definition of the required permissions (scope) 
>> of the requested access token to the interaction between signing service and authz service
>> when the permission ticket is obtained as reaction to the attempt of the client (the insurance 
>> company) to sign a document. So the client does not need to know what scope to request.
>> It instead uses the permission ticket (minted by the RS and the AS) to request the needed 
>> permissions. 
>> 
>> Is that correct?
>> 
>> best regards,
>> Torsten.
>> 
>>> Am 24.06.2018 um 15:01 schrieb George Fletcher <gffletch@aol.com>:
>>> 
>>> Not sure I have the flow exactly correct... here is an attempt to define a flow based on UMA. It's a little difficult to label which flows are which parts of the specs. Specifically I am using...
>>> 
>>> https://docs.kantarainitiative.org/uma/wg/oauth-uma-grant-2.0-05.html
>>> https://docs.kantarainitiative.org/uma/wg/oauth-uma-federated-authz-2.0-05.html
>>> 
>>> If you want the see the image... take the following text and load it into https://www.websequencediagrams.com/
>>> 
>>> title Signing Sequence
>>> 
>>> participant "Browser" as B
>>> participant "Insurer" as I
>>> participant "Signer" as S
>>> participant "Bank\n(UMA AS)" as A
>>> 
>>> B->I: complete process
>>> I->S: sign doc\n(required params)
>>> S->A: permission req\n(what the signer needs)
>>> A->S: permission ticket
>>> S->I: Not authorized\n(AS + permission tckt)
>>> I->A: request RPT\n(permission tckt)
>>> A->I: need_info
>>> I-->B: redirect
>>> B->A: claims interaction endpoint
>>> A->B: user verification & consent
>>> B->A: user meets required claims
>>> A-->B: redirect
>>> B->I: user met claimns\n(permission tckt)
>>> I->A: request RPT\n(permission tckt)
>>> A->I: RPT issued
>>> I->S: sign doc\n(RPT)
>>> S->A: introspect\n(RPT)
>>> A->S: permissions\n(required params)
>>> S->I: Signed doc
>>> 
>>> <uma-signing-rpt.png>
>>> 
>>>> On 6/24/18 4:27 AM, Torsten Lodderstedt wrote:
>>>> Hi George,
>>>> 
>>>> how is the dynamic nature (hash) of the authorization request handled in your solution?
>>>> 
>>>> Note: the signing service is not provided by the insurance company but a third party, a sol-called trusted service provider. The insurance company as the client in this flow sends the request to this provider.
>>>> 
>>>> best regards,
>>>> Torsten.
>>>> 
>>>> Am 23.06.2018 um 21:07 schrieb George Fletcher <gffletch@aol.com>:
>>>> 
>>>>> Thanks Torsten.
>>>>> 
>>>>> I think I have a solution :) Just to make sure I have the flow correct...
>>>>> 
>>>>> Assumption: Using a mobile client
>>>>> 
>>>>> 1. User (using their mobile client) attempts to sign a document with the insurance company
>>>>> 2. Insurance company redirects the user to their Bank asking for identity proof, and signing of specific documents
>>>>> 3. User interacts with Bank to get authorization for the specific transaction
>>>>> 4. Mobile client submits request to insurance company using token that is specific to the user, document etc.
>>>>> 
>>>>> This is effectively the UMA 2.0 flow [1]
>>>>> 
>>>>> 1. Mobile client attempts to invoke resource at the insurance company
>>>>> 2. Insurance company registers the request with UMA AS (the bank in this case) and gets a permissions ticket
>>>>> 3. Insurance company instructs mobile client to contact the bank
>>>>> 4. Mobile client contacts the bank specifying the permissions ticket
>>>>> 5. User meets banks requirements for the specific transaction (claims interaction)
>>>>> 6. Bank issues mobile client the RPT (token)
>>>>> 7. Mobile client invokes resource at insurance company with RPT
>>>>> 
>>>>> Note that the insurance company can specify the necessary bits that need to be in the token when it interacts with the Bank (as the UMA AS). [There might be some profiling required here]
>>>>> 
>>>>> I think it's worth exploring whether UMA will solve this use case.
>>>>> 
>>>>> Thanks,
>>>>> George
>>>>> 
>>>>> [1] https://docs.kantarainitiative.org/uma/wg/oauth-uma-grant-2.0-08.html
>>>>> 
>>>>>> On 6/23/18 3:43 AM, Torsten Lodderstedt wrote:
>>>>>>> Am 22.06.2018 um 23:08 schrieb George Fletcher <gffletch@aol.com>:
>>>>>>> 
>>>>>>> I would think that the scope issued to the refresh_token could represent the category or class of authorizations the refresh_token should be able to perform. For example, the kind of transactions that can be bound to access tokens. The scope issued into the access_token could be one of the "parameterized" ones. But maybe I'm not fully understanding the use case :)
>>>>>> Let me try to explain ;-)
>>>>>> 
>>>>>> The client is an issuance company wanting the customer to electronically sign a new contract (legally binding!). Signing in the end means to send a request containing the hash of the document to an API. The API will respond with an CM/S Object containing signature, certificate etc that the client will embedded in the contract document (typical PDF).
>>>>>> 
>>>>>> We want the user to authorize the signing request using their bank as IDP/AS. Therefore the client sends the OAuth authorization request to the AS. The actual signing request needs to be bound to client, user AND hash (document) in order to prevent fraud. Regulation (eIDAS) requires to always demonstrate the sole control of the user over the whole process. The AS therefore binds (scopes) the access token to exactly this single document/signing request. If the client wants the user to sign another document, it needs to got through the whole process again.
>>>>>> 
>>>>>> One could think about a general signing permission represented by a refresh token, but not in the high assurance level cases I‘m looking into.
>>>>>> 
>>>>>> Hope that helps,
>>>>>> Torsten.
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>>> -- 
>>> Distinguished Engineer                   
>>> Identity Services Engineering     Work: george.fletcher@teamaol.com
>>> AOL Inc.                          AIM:  gffletch
>>> Mobile: +1-703-462-3494           Twitter: http://twitter.com/gffletch
>>> Office: +1-703-265-2544           Photos: http://georgefletcher.photography