Combine fleet desktop and SSO ext#47868
Conversation
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Warning
- Copilot's review of this pull request may be incomplete because some of the changed files are excluded by your Copilot content exclusion settings. See Excluding content from Copilot for details.
Pull request overview
This PR consolidates the macOS Platform SSO (PSSO) extension into the Fleet Desktop macOS app distribution, updates the Fleet server’s AASA output to match the new production bundle/team IDs, and replaces the old standalone POC Xcode project with the new embedded-extension build/signing flow.
Changes:
- Embed
FleetPSSOExtension.appexinsideapps/fleet-desktop-macosand add Swift sources/entitlements/plist for the extension. - Update Fleet server PSSO AASA generation to return only
authsrvwith Fleet Desktop + extension app identifiers under Fleet’s team ID. - Update the macOS build workflow to sign/notarize the host app + embedded extension with provisioning profiles; remove the deprecated
apple-sso-extension/POC project.
Reviewed changes
Copilot reviewed 15 out of 30 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| ee/server/service/apple_psso.go | Updates PSSO AASA payload and hardcodes Fleet Desktop bundle IDs + Fleet team ID. |
| apps/fleet-desktop-macos/README.md | Documents the embedded PSSO extension, entitlements, and signing/profile requirements. |
| apps/fleet-desktop-macos/FleetPSSOExtension/Info.plist | Sets explicit extension bundle metadata (id, executable, min OS, principal class). |
| apps/fleet-desktop-macos/FleetPSSOExtension/FleetPSSOExtension.entitlements | Switches to Fleet team/app IDs and uses MDM-managed associated domains with empty array. |
| apps/fleet-desktop-macos/FleetPSSOExtension/AuthenticationViewController+Shared.swift | Adds shared helpers for registration payload, key IDs, UUID lookup, and login configuration. |
| apps/fleet-desktop-macos/FleetPSSOExtension/AuthenticationViewController+PSSO.swift | Implements device registration handler to POST registration directly to Fleet. |
| apps/fleet-desktop-macos/FleetPSSOExtension/AuthenticationViewController+Networking.swift | Adds URLSession networking + form-url-encoding + base64url helper. |
| apps/fleet-desktop-macos/FleetPSSOExtension/AuthenticationViewController.swift | Adds the extension principal class + minimal authorization handler conformance. |
| apps/fleet-desktop-macos/FleetDesktop/FleetDesktop.entitlements | Updates host app entitlements to Fleet team/app IDs and MDM-managed associated domains. |
| apps/fleet-desktop-macos/fleet-sso-extension-example.mobileconfig | Updates example profile for new bundle/team IDs and adds associated-domains payload. |
| apps/fleet-desktop-macos/build.sh | Builds the host app plus embedded .appex via swiftc and assembles bundle layout. |
| .github/workflows/fleet-desktop-macos-build.yml | Updates CI to embed provisioning profiles and sign/notarize app + embedded extension. |
| apple-sso-extension/README.md | Removes deprecated standalone PSSO POC documentation. |
| apple-sso-extension/FleetPSSO/Info.plist | Removes deprecated POC host app plist. |
| apple-sso-extension/FleetPSSO/AppDelegate.swift | Removes deprecated POC host app code. |
| apple-sso-extension/Fleet PSSO.xcodeproj/project.pbxproj | Removes deprecated POC Xcode project. |
| apple-sso-extension/build.sh | Removes deprecated POC build/sign/notarize script. |
| apple-sso-extension/Assets.xcassets/Contents.json | Removes deprecated POC asset catalog metadata. |
| apple-sso-extension/Assets.xcassets/AppIcon.appiconset/Contents.json | Removes deprecated POC icon set metadata. |
| docs/Contributing/research/mdm/psso.md | Changed but excluded from review by policy (contents unavailable). |
Files excluded by content exclusion policy (1)
- docs/Contributing/research/mdm/psso.md
Comments suppressed due to low confidence (1)
apps/fleet-desktop-macos/fleet-sso-extension-example.mobileconfig:63
- The new
com.apple.associated-domainspayload is missing standard payload metadata likePayloadVersion(and typicallyPayloadDisplayName). Without these, the example profile may be rejected or behave inconsistently in MDM tooling.
It would also help readability to indent the nested Configuration dictionary consistently.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
WalkthroughThe PR consolidates the Platform SSO (PSSO) extension into the Fleet Desktop macOS app bundle under a single team identifier ( 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/fleet-desktop-macos/fleet-sso-extension-example.mobileconfig`:
- Around line 45-63: The associated-domains payload dictionary is missing the
required PayloadVersion key, which is mandatory metadata for profile payloads
and will cause validation or configuration failures. Add a PayloadVersion
key-value pair to the dict element that contains PayloadType set to
com.apple.associated-domains. This key should be added at the same level as the
existing PayloadType, PayloadIdentifier, PayloadUUID, and Configuration keys
within that dictionary.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 3c588d57-76ef-4594-a7b2-ce39658af6f5
⛔ Files ignored due to path filters (13)
apple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_128x128.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_16x16.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_256x256.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_32x32.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_512x512.pngis excluded by!**/*.pngapple-sso-extension/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.pngis excluded by!**/*.pngapple-sso-extension/README.mdis excluded by!**/*.mdapps/fleet-desktop-macos/README.mdis excluded by!**/*.mddocs/Contributing/research/mdm/psso.mdis excluded by!**/*.md
📒 Files selected for processing (17)
.github/workflows/fleet-desktop-macos-build.ymlapple-sso-extension/Assets.xcassets/AppIcon.appiconset/Contents.jsonapple-sso-extension/Assets.xcassets/Contents.jsonapple-sso-extension/Fleet PSSO.xcodeproj/project.pbxprojapple-sso-extension/FleetPSSO/AppDelegate.swiftapple-sso-extension/FleetPSSO/Info.plistapple-sso-extension/build.shapps/fleet-desktop-macos/FleetDesktop/FleetDesktop.entitlementsapps/fleet-desktop-macos/FleetPSSOExtension/AuthenticationViewController+Networking.swiftapps/fleet-desktop-macos/FleetPSSOExtension/AuthenticationViewController+PSSO.swiftapps/fleet-desktop-macos/FleetPSSOExtension/AuthenticationViewController+Shared.swiftapps/fleet-desktop-macos/FleetPSSOExtension/AuthenticationViewController.swiftapps/fleet-desktop-macos/FleetPSSOExtension/FleetPSSOExtension.entitlementsapps/fleet-desktop-macos/FleetPSSOExtension/Info.plistapps/fleet-desktop-macos/build.shapps/fleet-desktop-macos/fleet-sso-extension-example.mobileconfigee/server/service/apple_psso.go
💤 Files with no reviewable changes (6)
- apple-sso-extension/Fleet PSSO.xcodeproj/project.pbxproj
- apple-sso-extension/Assets.xcassets/AppIcon.appiconset/Contents.json
- apple-sso-extension/Assets.xcassets/Contents.json
- apple-sso-extension/build.sh
- apple-sso-extension/FleetPSSO/Info.plist
- apple-sso-extension/FleetPSSO/AppDelegate.swift
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
49f366f to
2838d83
Compare
a9ed515
into
feature/fleet-macos-password-sync
Related issue: Resolves #46939
This PR is stacked on the work from #47801
Moves the SSO extension under the fleet desktop app. Adds the proper entitlements so it signs and can be distributed. Updates Fleet's AASA handling so the CI-generated SSO extension can establish trust by default
Tested CI build end-to-end on a mac which produced the findigns about codesign/notarization shockingly not flagging the mismatched profile/entitlements and the app failing at runtime.
The entire old
apple-sso-extensiondirectory is deleted - it was mostly just a wrapper app for the extension anywaysNo changes file as the base branch will have one
Checklist for submitter
If some of the following don't apply, delete the relevant line.
Changes file added for user-visible changes in
changes/,orbit/changes/oree/fleetd-chrome/changes.See Changes files for more information.
Input data is properly validated,
SELECT *is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters.Timeouts are implemented and retries are limited to avoid infinite loops
If paths of existing endpoints are modified without backwards compatibility, checked the frontend/CLI for any necessary changes
Testing
Added/updated automated tests
Where appropriate, automated tests simulate multiple hosts and test for host isolation (updates to one hosts's records do not affect another)
QA'd all new/changed functionality manually
Summary by CodeRabbit