UPDATE about the statement below: The 'OneLoginEurope' key is fixed and you should not need to configure Jamf Connect Login with 'Custom' provider anymore.<key>OIDCProvider</key><string>OneLoginEurope</string>-------------------------------------------------------------------- NOTE: I was told that configuring Jamf Connect with a OneLogin instance hosted in the EU does not work. See comments from Martin below. I presume this is an issue with the End Point Jamf Connect uses. Setting the OIDCProvider to "OneLoginEurope" does not work either. Solution: set OIDCProvider to "Custom" and add the "OIDCDiscoveryURL" which you'll find here: https://developers.onelogin.com/openid-connect/api/provider-config<key>OIDCProvider</key><string>Custom</string><key>OIDCDiscoveryURL</key><string>discovery URL</string>
Hi all, it has been a while since I posted another topic. Things got a bit busy, and I’ve been struggling fixing things with both ADFS and Okta in Jamf Connect. I still have some remaining roadblocks to tackle on those and will try to update those issues I mentioned in my 2 previous posts ASAP. But in the meantime, let’s have a look at another iDP integration in Jamf Connect: OneLogin.
Trying this one out was actually a relatively smooth ride, although I’m facing one minor issue which I’ll discuss at the end of this post.
So Jamf Connect and OneLogin, let’s have a look.
And oh yes… I’m adding something about Secure Tokens as well..
First of all I created a free dev account here.
Let’s start with configuring the OneLogin side of our integration with Jamf Connect Login according to the Jamf KB found here.
The first thing to do is create a WEB app in OneLogin (compared to other Jamf Connect integrations like Azure where you need a Native app).


Go back in the app and set the Redirect URL to https://127.0.0.1/jamfconnect

On the SSO tab, set the Application type to WEB,…

and the Authentication method to “None (PKCE)”:

Next you need to assign users to the app. There are multiple ways of doing this in One Login.
The easiest way for testing your config is to manually assign the app to your test user:


Another way is to work via the Roles feature. By default all users in OneLogin are added to the “Default” role, so you could just assign the app to this “Default” role or create a new one:


That’s it for a basic configuration of OneLogin for Jamf Connect! Next is the plist for our config profile. The mandatory keys are:
– OIDCProvider
– OIDCRedirectURI
– OIDCClientID
– OIDCROPGID (in case you want to validate the OneLogin password and set it as the local account password)

In the plist I also have the OIDCAdmin key set (amongst other optional keys). I’ll come back to this below.
Tweak the plist to what’s needed for your deployment, add the app ID in OIDCClientID and OIDCROPGID and upload it as a custom preference in a config profile of Jamf Pro:

The rest is magic again.


If you’ve set OIDCNewPassword to false, you’ll get a second authentication to validate the password and set it as the local account password.

If you set it to True, the user will be asked to create/choose a password for the local account:

After completing the user creation, you end up automatically logging in with the newly created user. And this is were I’d like to highlight 2 things!
First of all, Secure Tokens… yes they never go away… or better, depending the situation they are NOT automatically created. Unless you add the CreateAdminUser key to your config and set it to True (which makes ALL your Jamf Connect users admin accounts), you end up with STANDARD accounts. Hence, unless you logged in with an other LOCAL ADMIN first, there we be NO secure token holder on the machine. As discussed in one of my previous posts (still valid with 10.14.3, and although I did not test 10.14.4 with Secure Tokens yet I presume noting changed), this is not really a problem, just a consideration to keep in mind.

Having no Secure Token holder on the machine, does not block you from enabling FileVault with either profile or policy since 10.14.2. In earlier versions there was a bug in macOS causing profiles and policies to fail enabling FileVault if the user enabling it did not have a token.
The only consideration to make is that enabling FileVault via your end user who is a standard account (while no other token holder exist on the Mac) will give you a situation where your Management Account, or any other Local Admin account you use for IT admin purposes will not have a token, and won’t be able to unlock FileVault after a reboot. Have a look at my script to fix it if you really need to, but I still believe there is NO real need for having a local admin account with a secure token.
This personal opinion is based on the fact that I don’t see a real situation where you would need to have physical access to the Mac, reboot it and unlock FileVault without the user knowing you have his/her Mac in your possession. Or even without having the end user with you.
I only see a need for this when of-boarding end users… but that should not be a problem either as you should have the recovery key to bypass FileVault anyway!
Anyway, opinions might be different, just highlighting the fact that if the Jamf Connect user is a standard user, and this user is the first account ever logging in during a DEP workflow… there will be no secure token. And if you would log in with a local admin before, this admin account would get a secure token… but then the Jamf Connect user logging in afterwards would not get one!!! And this would even be a bigger problem, because this user would not be able to enable FileVault and your policy/profile will FAIL. You will need to grant the end user a secure token via your admin token holder… and this is where my script comes in to play again! A situation I’d try to avoid however!
So, you could avoid this by making everyone an Admin through jamf Connect, by setting the following key:
<key>CreateAdminUser</key>
<true/>
While this would then make everyone an Admin, they would get a Secure Token if they are the very first account to log in.
That’s it for my opinions and considerations on Secure Tokens and Jamf Connect.
Now, there is one more thing I wanted to test, being the automated creation of either Standard or Admin accounts, based on Roles in OneLogin. This is in my opinion a very nice feature of Jamf Connect, as it allows you to lock down admin privileges for those who don’t need it, while still allowing some users, developers for instance, to be admin on their mac.
Hence I added the OIDCAdmin key in my configuration, as mentioned above, and set it to the Admin role I created in OneLogin. I created a “JCAdmin” role and assigned my admin test user to it.


I tried with and without assigning the Jamf Connect Login app to it, with and without adding this admin user to a JCAdmin group and some other tweaks and changes to my OneLogin… but unfortunately my admin user never becomes and Admin. Not on a Vm, not on a physical machine. Whatever I try… I get a Standard account… 🙁

I’ll add this to my list of “Jamf Connect troubleshooting to do’s”, but if someone would have succeeded in doing so, please share in the comments below!
That’s it! Jamf Connect Login, OneLogin, something about Secure Tokens again and a small issue to investigate further!
As always, if you have comments, remarks, suggestions, leave a comment down below, and if you like this blog, tell your friend about it, share it or leave some feedback here!
grtz,
TTG

Apple ecosystem enthusiast, geek, tech gadget freak, Belgian living in the Netherlands
Manager Technical Support | Jamf
It’s currently not possible to use Jamf Connect Login when your instance is located in Europe. You can check this by doing a nslookup ($ nslookup ttg-dev.onelogin.com). When the CNAME records points to “portal-eu.onelogin.com” your instance is in Europe. “sso-glb.onelogin.com” is used for by default (US).
Interesting… thanks for sharing! Any additional info why or source of this info?
We’ve tested this with in different OneLogin tenants.
OneLogin Europe shows:
oops! something went wrong
error: invalid_client
error_description: client is invalid
state: 064F156D-XXXX-XXXX-XXXX-A759C3977883
The tool (which I shall not mention here) shows a different provider for Europe (OneLoginEurope). Using “OneLoginEurope” as OIDCProvider doesn’t work.
Did you try configuring it as “custom provider”, set OIDC Provider to Custom and add the https://openid-connect-eu.onelogin.com/oidc/.well-known/openid-configuration as the discovery URL?
https://developers.onelogin.com/openid-connect/api/provider-config
Great feedback! That’s actually working! Nice! Why isn’t this working with the OneLogin Provider? Is Jamf Connect currently unable to detect the EU instances?
I’ll report it. Must be a little bug or typo in the code I guess 🙂 I have a feeling a typo in the discovery url backed in for EU… just guessing.
Please also mention that OIDCNewPassword isn’t working when it’s set to false. It keeps prompting that the password is incorrect. OIDCClientID and OIDCROPGID are the same. Maybe this is a result of the custom provider.
Not sure, could you check what the logs say when it gives you the incorrect password message? SSH into the machine with another local admin, the Jamf Management acount for instance and run the following command:
log stream –predicate ‘subsystem == “com.jamf.connect.login”‘ –debug
Apart from checking the logs, you don’t have a Client Secret configured on the OneLogin OIDC app right? If so, remove it (both from the app as from the Jamf Connect config).
Thanks for your help. Client Secret is not configured. Via log stream I was able to capture these lines after entering the password again:
Info 0x134d2 3313 0 SecurityAgent: (JamfConnectLogin) [com.jamf.connect.login:UI] OIDC auth succeeded!
Info 0x134d2 3313 0 SecurityAgent: (JamfConnectLogin) [com.jamf.connect.login:Settings] Found managed preference in com.jamf.connect.login: OIDCNewPassword
Debug 0x134d2 3313 0 SecurityAgent: (JamfConnectLogin) [com.jamf.connect.login:UI] Creating ROPG worker from line: 155
Debug 0x134d2 3313 0 SecurityAgent: (JamfConnectLogin) [com.jamf.connect.login:UI] Calling ROPG worker for checkPass from line: 155
Error 0x0 3313 0 SecurityAgent: (JamfConnectLogin) [com.jamf.connect.login:UI] ROPG Error: MFA is required for this user
Debug 0x134d2 3313 0 SecurityAgent: (JamfConnectLogin) [com.jamf.connect.login:UI] ROPG worker response received from line: 155
Debug 0x134d2 3313 0 SecurityAgent: (JamfConnectLogin) [com.jamf.connect.login:UI] ROPG worker response: bad password from line: 155
Jamf Connect Login allows me to use MFA but when reentering the password for local usage it fails because of MFA.
Have not seen this kind of behaviour with Azure AD or Okta.
As OIDCDiscoveryURL you coulda also use https://.onelogin.com/oidc/.well-known/openid-configuration. Then you don’t need to figure out which region you’re using.
Am I correct in saying that; even with FileVault enabled and secure token for all admin and end-users, the startup user experience will be that user’s:
1. Must first provide a password to unlock FileVault
2. Then enter their credentials to login to the user account?
Hey Pete, are you blocking Local Auth in Jamf Connect Login? If yes, the behavior you describe is correct as the FV auth is blocked from passing through the login window (in this case Jamf Connect Login).
If you do not block local auth it should passthrough from FV unlock, but that bypasses the Jamc Connect Login window.
Yeah we are blocking local auth as we have a requirement for MFA at login so the Jamf Connect Login Window would be required. Hopefully Apple will allow 3rd parties such as Jamf to improve this experience sometime soon.
I don’t see that happening I’m afraid. The deny local auth is doing exactly what you ask it to do: not allowing the login without the “3rd party tool” or Jamf Connect. I don’t really see how Apple could change that if you decide to block it. And FileVault is an offline process, taking place prior to the login mech in the boot sequence, so no way a tool like Jamf Connect would be able to influence that without changing the design of FileVault.
@Martin You are right, even with our test instance reentering the password for local usage fails because of MFA. Did you find a way to figure out ?
During our tests, we noticed that users have to enter 3 times them password if the filevault is enabled (one for the disk encryption, one for the windowlogin and a last time for the ROPG) is there a way to avoid the last password ?
Last think, once logged the users have to re-identify them on the Onelogin portal to be able to access to our applications.
When filevault is enabled it the first authentication passes the credentials to the login window process coming next. If the credentials are in sync between Fv and the local account (should), it does not show the login window and hence bypasses jamf connect also. However, if there is a mismatch between FV password and local account password, or if you enable “deny local auth” in Jamf Connect Login it will show the login window. With Jamf Connect Login (except when using Okta and their API for JCL), it will always request password twice. Like you mention, one for OIDC and one for ROPG. No way around that. Finally regarding OneLogin… yea Jamf Connect Login or Verify is in no way an SSO tool. Hence you will indeed need to authenticate against SSO once logged into the mac, regardless of Jamf Connect
This works, thank you for posting and explaining nicely, but only the Login app.
Agent app doesn’t work when you try to login again, change password, etc. I change the OIDCDiscoveryURL to point to the V2 URL, but in logs I see I can’t authenticate. Everything else is the same as in this tutorial.
I’m getting: OIDC auth failure: Invalid response code: Optional (404)