Skip to main content
Question

Jamf Connect and Microsoft Azure Conditional Access

  • March 8, 2021
  • 34 replies
  • 683 views

Show first post

34 replies

rabbitt
Forum|alt.badge.img+17
  • Author
  • Valued Contributor
  • July 14, 2022

In regards to the following:

(H3) Step Four: Remove any Conditional Access policies applied to All cloud apps Navigate to
portal.azure.com → Azure Conditional Access. Examine any application applied to the scope of “All
cloud apps”. Either set “Enable policy” to “Off” for any application that has a Grant of “Require
multi-factor authentication” or modify the “Cloud apps or actions” to specifically list resources
that should have MFA applied.Applying a policy to require MFA for “All cloud apps” will cause the ROPG application in the next
step to inaccurately show failed logins in the Azure sign-in
logs.

Rather than modify "All cloud apps" to include all apps except Jamf, can Jamf just be added as an exclusion to existing CA's that require MFA? Would it just be "Jamf Connect - Conditional Access Policy API" that needs to be excluded?


Yes, you can definitely do that.  And correct, the "private" app registration will be the app you want to add to the "Exclude" list in the Conditional Access policy.


BR_TCTX
Forum|alt.badge.img+5
  • New Contributor
  • September 12, 2022

Anyone seeing an "AADSTS500113: No reply address is registered for the application"?  I walked thru all of the steps and still get this.  We are using Duo for MFA and it works, but gives this error after.  


BR_TCTX
Forum|alt.badge.img+5
  • New Contributor
  • September 12, 2022

Anyone seeing an "AADSTS500113: No reply address is registered for the application"?  I walked thru all of the steps and still get this.  We are using Duo for MFA and it works, but gives this error after.  


Never mind, figured it out.  Had to add https://127.0.0.1/jamfconnect to the Conditional Access app registration.  Now it works fine.


Forum|alt.badge.img+5
  • New Contributor
  • September 13, 2022

So to be clear - this will result in the following? 

Jamf Connect logging failures in Azure with the 50076 sign in error code, even when the MFA has prompted and been accepted by the Mac? Is there a way to have the 50076 errors in Azure show as successes instead of failures?

We're worried about the constant failures resulting in the triggering of a block out for the user. 
We're on 2.14 and have configured things to spec per the instructions and the chat here. Just want to make sure I can properly communicate what's occurring back to the powers that be. Or if we need to tweak something - that we do so.  Thanks in advance for any input. 


rabbitt
Forum|alt.badge.img+17
  • Author
  • Valued Contributor
  • September 14, 2022

So to be clear - this will result in the following? 

Jamf Connect logging failures in Azure with the 50076 sign in error code, even when the MFA has prompted and been accepted by the Mac? Is there a way to have the 50076 errors in Azure show as successes instead of failures?

We're worried about the constant failures resulting in the triggering of a block out for the user. 
We're on 2.14 and have configured things to spec per the instructions and the chat here. Just want to make sure I can properly communicate what's occurring back to the powers that be. Or if we need to tweak something - that we do so.  Thanks in advance for any input. 


The error isn't really an error - it's just an interrupted login.  By the time the user needs to MFA in the password check to get an access token, Jamf Connect already knows the password is right.

If we think of the menu bar agent as the thing that checks the local client password against the cloud password, we don't really need the full access/ID/refresh tokens that would be sent down to the client if the user actually did the MFA.  JC would look at that and say, "Thanks, but..." and then pitch those into the bit bucket anyway.  JC got what it needed - was the password right?  If you're prompting for MFA, then the password HAD to be right.

What the "complex but exacting" method of setting up two apps does will exclude the "public" endpoint, the one that does ROPG, from needing MFA at all.  This will eliminate the 50076 errors.  When the user is doing an interactive login (aka logging into the Mac, seeing the Azure login web page) then they'll be prompted for MFA because the scope requests access to a resource that needs MFA.

It's confusing, but it eliminates the errors in the logs.


mateow
Forum|alt.badge.img+4
  • New Contributor
  • March 8, 2023

Sample configuration profile with this setup:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AllowNetworkSelection</key>
<true/>
<key>CreateJamfConnectPassword</key>
<true/>
<key>OIDCAdmin</key>
<array>
<string>Admin</string>
</array>
<key>OIDCAdminAttribute</key>
<string>roles</string>
<key>OIDCClientID</key>
<string>[YOUR PUBLIC APPLICATION UUID STRING HERE]</string>
<key>OIDCDiscoveryURL</key>
<string>https://login.microsoftonline.com/[YOUR TENANT UUID STRING HERE]/v2.0/.well-known/openid-configuration</string>
<key>OIDCNewPassword</key>
<false/>
<key>OIDCProvider</key>
<string>Azure</string>
<key>OIDCROPGID</key>
<string>[YOUR PUBLIC APPLICATION UUID STRING HERE]</string>
<key>OIDCRedirectURI</key>
<string>https://127.0.0.1/jamfconnect</string>
<key>OIDCScopes</key>
<string>api://[YOUR RANDOMLY GENERATED API IDENTIFIER HERE]/jamfconnect+openid+profile+email</string>
<key>OIDCTenant</key>
<string>[YOUR TENANT UUID STRING HERE]</string>
<key>OIDCUsePassthroughAuth</key>
<true/>
<key>ROPGDiscoveryURL</key>
<string>https://login.microsoftonline.com/[YOUR TENANT UUID STRING HERE]/.well-known/openid-configuration</string>
<key>ROPGTenant</key>
<string>[YOUR TENANT UUID STRING HERE]</string>
</dict>
</plist>

I do not see the ROPG Scopes key in this example and when trying to add it in JC Configurator, I get a invalid keys error and it removes them.  


Forum|alt.badge.img+1
  • New Contributor
  • November 30, 2023

@rabbitt Is this configuration still the recommended process? Or should we migrate to use the custom security attributes - from my brief reading it seems the security attribute should be applied to the ROPG application, right?  I also see the option to provide an application direct access to the Password Hash Sync in Azure.  Does this remove the requirement for creating separate applications in Azure for OIDC and ROPG?  If not, which application should I apply the Azure Password Hash Sync policy to?


rabbitt
Forum|alt.badge.img+17
  • Author
  • Valued Contributor
  • December 5, 2023

@rabbitt Is this configuration still the recommended process? Or should we migrate to use the custom security attributes - from my brief reading it seems the security attribute should be applied to the ROPG application, right?  I also see the option to provide an application direct access to the Password Hash Sync in Azure.  Does this remove the requirement for creating separate applications in Azure for OIDC and ROPG?  If not, which application should I apply the Azure Password Hash Sync policy to?


https://github.com/jamf/jamfconnect/tree/main/azure_conditional_access has the current guidance (just substitute "Entra ID" for anytime I say "Azure."

  • Create the custom security attribute.
  • Apply the custom security attribute as an "exception" to any policy that is applied to "All cloud apps."
  • Apply the custom security attribute to the "public" app registration you made for Jamf Connect.
  • Do NOT apply the custom security attribute to the "API" (or "private") app registration you make for Jamf Connect
  • Add the "API" app to your conditional access policy that requires MFA
  • Change your Jamf Connect Login configuration to have a custom OIDCScope that calls the "API" app

When ROPG happens, no MFA required, asks the "public" app to confirm the password, gets a token back in response if the password is right.

When OIDC happens, "public" app asks the "API" app for something (that's the custom OIDCScope asking the API to get involved.)  API app is subject to MFA.  User prompted for MFA as part of the login.  Response is a token if the user successfully completes authentication.

Password Hash Sync access _should_ be enabled for apps by default, but if it's not, that's where the powershell script to create a special policy for Jamf Connect kicks in.  Separate from the conditional access stuff.


wearyadmin
Forum|alt.badge.img
  • New Contributor
  • July 9, 2025

So just to clarify, is the only negative consequence of not creating the exception simply just log noise?

One thing I think that JAMF has failed to disclose in the doco (https://learn.jamf.com/en-US/bundle/jamf-connect-documentation-current/page/Modifying_Jamf_Connect_for_Conditional_Access_Polices.html) is the negative consequences of adding an exception to a Conditional Access policy which is scoped to ‘All resources (formerly 'All cloud apps')’. It then excludes certain ‘low privilege scopes’ for MS graph:

see: https://learn.microsoft.com/en-us/entra/identity/conditional-access/concept-conditional-access-cloud-apps#conditional-access-behavior-when-an-all-resources-policy-has-an-app-exclusion

In practice we immediately noticed side effects like using low level PowerShell commands like connecting to graph with ‘connect-mggraph’ no longer requiring MFA. The work around for these scopes in the above article isn’t consistent either in testing and probably would just reintroduce the ROPG logging issue above.

Has anyone got any clarification for the question at the start of the post please?

__PRESENT