It’s difficult to give advise without lot of detailed information. I nevertheless give it a try.
Mechanically, the application would need to use a different grant, credential instead of ROPC. If such an application today already uses a distinct client_id, the AS must be set up to relate this client_id and the service account the same app used before directly. With that the respective deployment is able to leverage all client authentication methods, including mTLS. > On 21. Feb 2020, at 16:02, Neil Madden <neil.mad...@forgerock.com> wrote: > > But we’re talking about existing deployments. Are you suggesting that people > should bulk rename all of their clients to match the service accounts (or > vice-versa)? > > — Neil > >> On 21 Feb 2020, at 14:54, Torsten Lodderstedt <tors...@lodderstedt.net> >> wrote: >> >> >> >>> On 21. Feb 2020, at 15:47, Neil Madden <neil.mad...@forgerock.com> wrote: >>> >>> Sorry, I missed that message. >>> >>> While this may be a solution in specific circumstances, I don’t think it’s >>> a general solution. e.g. an AS may not allow manually choosing the >>> client_id to avoid things like >>> https://tools.ietf.org/html/draft-ietf-oauth-security-topics-14#section-4.13 >>> or may return different introspection results for client credentials >>> tokens (e.g. with no “sub”) and so on. In practice, this adds even more >>> steps for somebody to migrate from existing ROPC usage. >>> >>> This is asking people to make fundamental changes to their identity >>> architecture rather than simply switching to a new grant type. >> >> I don’t see this as a fundamental change, it adds another claim/permission >> source to a client id. >> >>> https://tools.ietf.org/html/draft-ietf-oauth-security-topics-14#section-4.13 >> >> This can be solved by either using the id of the service account as sub or >> even put the service identity into a dedicated realm. We implemented the >> later strategy at Deutsche Telekom couple of yrs ago. >> >>> >>> — Neil >>> >>>> On 21 Feb 2020, at 14:34, Torsten Lodderstedt <tors...@lodderstedt.net> >>>> wrote: >>>> >>>> I see - we have gone full cycle :-) >>>> >>>> Annabelle’s proposal would solve that. Relate a client id to a service >>>> account and obtain the token data from there. >>>> >>>>> On 21. Feb 2020, at 15:31, Neil Madden <neil.mad...@forgerock.com> wrote: >>>>> >>>>> Yes, that is great. But mTLS doesn’t support service accounts (!= >>>>> clients). Maybe it should? Should there be a mTLS *grant type*? >>>>> >>>>> — Neil >>>>> >>>>>> On 21 Feb 2020, at 14:20, Torsten Lodderstedt <tors...@lodderstedt.net> >>>>>> wrote: >>>>>> >>>>>> 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