Have you ever tried the client credentials grant with mTLS? After reading your 
description it seems to be simpler than JWT Bearer.

* work out if the AS even supports mTLS
* work out how to configure the AS to trust my cert(s)
* Create key pair and cert using openssl
* Register your (self-signed) cert along with your client_id
* Configure the HTTP client to use your key pair for TLS Client Authentication

Works very well for us. 

> On 21. Feb 2020, at 15:12, Neil Madden <neil.mad...@forgerock.com> wrote:
> 
> No failures, but it is a much more complex grant type to set up, when you 
> consider everything you have to do:
> 
> * work out if the AS even supports JWT bearer and how to turn it on
> * work out how to configure the AS to trust my public key(s)
>  - do I have to create a new HTTPS endpoint to publish a JWK Set?
> * determine the correct settings for issuer, audience, subject, etc. Does the 
> AS impose non-standard requirements? e.g. RFC 7523 says that the JWT MUST 
> contain a “sub” claim, but Google only allows this to be present if your 
> client is doing impersonation of an end-user (which requires additional 
> permissions).
> * do I need a unique “jti” claim? (OIDC servers do, plain OAuth ones might 
> not) If I do, can I reuse the JWT or must it be freshly signed for every call?
> * locate and evaluate a JWT library for my language of choice. Monitor that 
> new dependency for security advisories.
> * choose a suitable signature algorithm (‘ere be dragons)
> * figure out how to distribute the private key to my service
> 
> Compared to “create a service account and POST the username and password to 
> the token endpoint” it adds a little friction. (It also adds a lot of 
> advantages, but it is undeniably more complex).
> 
> — Neil
> 
> 
>> On 21 Feb 2020, at 13:41, Matthew De Haast <matt=40coil....@dmarc.ietf.org> 
>> wrote:
>> 
>> I have a feeling that if we had more concise JWT libraries and command line 
>> tools, where using the JWT Bearer grant became a one-liner again then we 
>> wouldn’t be having this conversation. So perhaps removing it is an incentive 
>> to make that happen.
>> 
>> Neil could you elaborate more on this please. What failures are you 
>> currently experiencing/seeing with the JWT Bearer grant? 
>> 
>> Matt
>> 
>> On Thu, Feb 20, 2020 at 12:42 AM Neil Madden <neil.mad...@forgerock.com> 
>> wrote:
>> I have a feeling that if we had more concise JWT libraries and command line 
>> tools, where using the JWT Bearer grant became a one-liner again then we 
>> wouldn’t be having this conversation. So perhaps removing it is an incentive 
>> to make that happen.
>> 
>> 
>>> On 19 Feb 2020, at 22:01, Dick Hardt <dick.ha...@gmail.com> wrote:
>>> 
>>> Neil: are you advocating that password grant be preserved in 2.1? Or do you 
>>> think that service account developers know enough about what they are doing 
>>> to follow what is in 6749?
>>> ᐧ
>>> 
>>> On Wed, Feb 19, 2020 at 1:52 PM Neil Madden <neil.mad...@forgerock.com> 
>>> wrote:
>>> OAuth2 clients are often private to the AS - they live in a database that 
>>> only the AS can access, have attributes specific to their use in OAuth2, 
>>> and so on. Many existing systems have access controls based on users, 
>>> roles, permissions and so on and expect all users accessing the system to 
>>> exist in some user repository, e.g. LDAP, where they can be looked up and 
>>> appropriate permissions determined. A service account can be created inside 
>>> such a system as if it was a regular user, managed through the normal 
>>> account provisioning tools, assigned permissions, roles, etc.
>>> 
>>> Another reason is that sometimes OAuth is just one authentication option 
>>> out of many, and so permissions assigned to service accounts are preferred 
>>> over scopes because they are consistently applied no matter how a request 
>>> is authenticated. This is often the case when OAuth has been retrofitted to 
>>> an existing system and they need to preserve compatibility with already 
>>> deployed clients.
>>> 
>>> See e.g. Google cloud platform (GCP): 
>>> https://developers.google.com/identity/protocols/OAuth2ServiceAccount
>>> They use the JWT bearer grant type for service account authentication and 
>>> assign permissions to those service accounts and typically have very broad 
>>> scopes. For service-to-service API calls you typically get an access token 
>>> with a single scope that is effectively “all of GCP” and everything is 
>>> managed at the level of permissions on the RO service account itself. They 
>>> only break down fine-grained scopes when you are dealing with user data and 
>>> will be getting an access token approved by a real user (through a normal 
>>> auth code flow).
>>> 
>>> — Neil
>>> 
>>>> On 19 Feb 2020, at 21:35, Torsten Lodderstedt <tors...@lodderstedt.net> 
>>>> wrote:
>>>> 
>>>> Can you explain more in detail why the client credentials grant type isn’t 
>>>> applicable for the kind of use cases you mentioned?
>>>> 
>>>>> Am 19.02.2020 um 22:03 schrieb Neil Madden <neil.mad...@forgerock.com>:
>>>>> 
>>>>> I very much agree with this with regards to real users. 
>>>>> 
>>>>> The one legitimate use-case for ROPC I’ve seen is for service accounts - 
>>>>> where you essentially want something like client_credentials but for 
>>>>> whatever reason you need the RO to be a service user rather than an 
>>>>> OAuth2 client (typically so that some lower layer of the system can still 
>>>>> perform its required permission checks).
>>>>> 
>>>>> There are better grant types for this - e.g. JWT bearer - but they are a 
>>>>> bit harder to implement. Having recently converted some code from ROPC to 
>>>>> JWT bearer for exactly this use-case, it went from a couple of lines of 
>>>>> code to two screens of code. For service to service API calls within a 
>>>>> datacenter I’m not convinced this resulted in a material increase in 
>>>>> security for the added complexity.
>>>>> 
>>>>> — Neil
>>>>> 
>>>>>> On 18 Feb 2020, at 21:57, Hans Zandbelt <hans.zandb...@zmartzone.eu> 
>>>>>> wrote:
>>>>>> 
>>>>>> I would also seriously look at the original motivation behind ROPC: I 
>>>>>> know it has been deployed and is used in quite a lot of places but I 
>>>>>> have never actually come across a use case where it is used for 
>>>>>> migration purposes and the migration is actually executed (I know that 
>>>>>> is statistically not a very strong argument but I challenge others to 
>>>>>> come up with one...)
>>>>>> In reality it turned out just to be a one off that people used as an 
>>>>>> easy way out to stick to an anti-pattern and still claim to do OAuth 
>>>>>> 2.0. It is plain wrong, it is not OAuth and we need to get rid of it.
>>>>>> 
>>>>>> Hans.
>>>>>> 
>>>>>> On Tue, Feb 18, 2020 at 10:44 PM Aaron Parecki <aa...@parecki.com> wrote:
>>>>>> Agreed. Plus, the Security BCP is already effectively acting as a grace 
>>>>>> period since it currently says the password grant MUST NOT be used, so 
>>>>>> in the OAuth 2.0 world that's already a pretty strong signal..
>>>>>> 
>>>>>> Aaron
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Tue, Feb 18, 2020 at 4:16 PM Justin Richer <jric...@mit.edu> wrote:
>>>>>> There is no need for a grace period. People using OAuth 2..0 can still 
>>>>>> do OAuth 2.0. People using OAuth 2.1 will do OAuth 2.1. 
>>>>>> 
>>>>>> — Justin
>>>>>> 
>>>>>>>> On Feb 18, 2020, at 3:54 PM, Anthony Nadalin 
>>>>>>>> <tonynad=40microsoft....@dmarc.ietf.org> wrote:
>>>>>>> 
>>>>>>> I would suggest a SHOULD NOT instead of MUST, there are still sites 
>>>>>>> using this and a grace period should be provided before a MUST is 
>>>>>>> pushed out as there are valid use cases out there still.
>>>>>>> 
>>>>>>> From: OAuth <oauth-boun...@ietf.org> On Behalf Of Dick Hardt
>>>>>>> Sent: Tuesday, February 18, 2020 12:37 PM
>>>>>>> To: oauth@ietf.org
>>>>>>> Subject: [EXTERNAL] [OAUTH-WG] OAuth 2.1: dropping password grant
>>>>>>> 
>>>>>>> Hey List 
>>>>>>> 
>>>>>>> (Once again using the OAuth 2.1 name as a placeholder for the doc that 
>>>>>>> Aaron, Torsten, and I are working on)
>>>>>>> 
>>>>>>> In the security topics doc
>>>>>>> 
>>>>>>> https://tools.ietf.org/html/draft-ietf-oauth-security-topics-14#section-2.4
>>>>>>> 
>>>>>>> The password grant MUST not be used.
>>>>>>> 
>>>>>>> Some background for those interested. I added this grant into OAuth 2.0 
>>>>>>> to allow applications that had been provided password to migrate. Even 
>>>>>>> with the caveats in OAuth 2.0, implementors decide they want to prompt 
>>>>>>> the user to enter their credentials, the anti-pattern OAuth was created 
>>>>>>> to eliminate. 
>>>>>>> 
>>>>>>> 
>>>>>>> Does anyone have concerns with dropping the password grant from the 
>>>>>>> OAuth 2.1 document so that developers don't use it?
>>>>>>> 
>>>>>>> /Dick
>>>>>>> _______________________________________________
>>>>>>> OAuth mailing list
>>>>>>> OAuth@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>> 
>>>>>> _______________________________________________
>>>>>> OAuth mailing list
>>>>>> OAuth@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>> -- 
>>>>>> ----
>>>>>> Aaron Parecki
>>>>>> aaronparecki.com
>>>>>> @aaronpk
>>>>>> 
>>>>>> _______________________________________________
>>>>>> OAuth mailing list
>>>>>> OAuth@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>> 
>>>>>> 
>>>>>> -- 
>>>>>> hans.zandb...@zmartzone.eu
>>>>>> ZmartZone IAM - www.zmartzone.eu
>>>>>> _______________________________________________
>>>>>> OAuth mailing list
>>>>>> OAuth@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>> 
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> OAuth@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>> 
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org
>>> https://www.ietf.org/mailman/listinfo/oauth
>> 
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
> 
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to