Skip to content

Add Apple App Attest attestation for mobile clients - #4055

Merged
ThaminduDilshan merged 1 commit into
thunder-id:mainfrom
Malith-19:feat/3452-apple-app-attest
Jul 16, 2026
Merged

Add Apple App Attest attestation for mobile clients#4055
ThaminduDilshan merged 1 commit into
thunder-id:mainfrom
Malith-19:feat/3452-apple-app-attest

Conversation

@Malith-19

@Malith-19 Malith-19 commented Jul 16, 2026

Copy link
Copy Markdown
Member

Description

Adds Apple App Attest as a second platform attestation provider for mobile clients initiating flows directly, alongside the existing Google Play Integrity verifier.

Approach

  • New appAttestVerifier implements the existing attestation.VerifierInterface. Verification is fully offline: base64 + CBOR decode the attestation object, verify the certificate chain against Apple's public App Attestation Root CA, then check the App ID hash (SHA256(teamId.bundleId)), the App Attest AAGUID (production or development), a zero signature counter, and that the credential ID matches the credential certificate's public key.
  • A composite verifier dispatches to the Android or Apple verifier based on which platform the application configures. The Play Integrity verifier is unchanged.
  • Apple config (teamId, bundleId) carries no secret, so no credential encryption is involved. An application may configure only one platform; configuring both is rejected on create/update.

Related Issues

Related PRs

Tests

  • Unit tests for the verifier (success, and each failure mode) using a synthetic offline certificate chain.
  • Integration tests for the flow-initiation guard (missing token, malformed token).

Summary by CodeRabbit

  • New Features
    • Added iOS Apple App Attest support alongside Android Play Integrity.
    • Application attestation settings now support selecting a platform (Android or iOS) with Apple Team ID and Bundle ID.
    • Flow initiation now supports Apple attestation verification and rejects missing or malformed attestation tokens.
  • Bug Fixes
    • Improved validation to reject ambiguous configurations unless exactly one attestation platform is configured.
  • Documentation
    • Updated application settings and authentication guides to cover platform attestation for both Android and iOS.

@github-actions

Copy link
Copy Markdown

Dependency Validation Results

Dependency name: github.com/fxamacker/cbor/v2
Version: v2.9.2
Approved: ❌ No - Module not found in dependency registry


Next Steps

  1. Review the validation failures listed above
  2. Check if dependencies are in the approved dependency list
  3. Options to resolve:
    • Remove the unapproved dependencies from this PR
    • OR submit a PR to add these dependencies to the approved list in engineering-governance
  4. Once resolved, push changes to re-run validation

This PR is blocked until all dependencies are approved.

⚠️ Please verify the scope of the dependencies usage is necessary

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 39694153-faf6-4f48-981c-00b4bca68272

📥 Commits

Reviewing files that changed from the base of the PR and between 01fc304 and 441f76b.

📒 Files selected for processing (29)
  • api/application.yaml
  • backend/cmd/server/servicemanager.go
  • backend/go.mod
  • backend/internal/application/error_constants.go
  • backend/internal/application/service.go
  • backend/internal/application/service_test.go
  • backend/internal/attestation/app_attest.go
  • backend/internal/attestation/app_attest_constants.go
  • backend/internal/attestation/app_attest_test.go
  • backend/internal/attestation/composite.go
  • backend/internal/attestation/composite_test.go
  • backend/internal/attestation/error_constants.go
  • backend/internal/attestation/init.go
  • backend/internal/attestation/model.go
  • backend/internal/flow/flowexec/service.go
  • backend/internal/flow/flowexec/service_test.go
  • backend/internal/system/i18n/core/defaults.go
  • backend/pkg/thunderidengine/engine.go
  • backend/pkg/thunderidengine/providers/model.go
  • backend/pkg/thunderidengine/providers/model_test.go
  • docs/content/guides/guides/applications/application-settings.mdx
  • docs/content/guides/key-concepts/authentication/integration-models.mdx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/AttestationSection.tsx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/EditAdvancedSettings.tsx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/__tests__/AttestationSection.roundtrip.test.tsx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/__tests__/AttestationSection.test.tsx
  • frontend/apps/console/src/features/applications/models/oauth.ts
  • frontend/apps/console/src/features/applications/pages/ApplicationEditPage.tsx
  • frontend/packages/i18n/src/locales/en-US.ts
🚧 Files skipped from review as they are similar to previous changes (21)
  • backend/internal/attestation/app_attest_constants.go
  • backend/internal/attestation/model.go
  • backend/internal/system/i18n/core/defaults.go
  • backend/internal/application/error_constants.go
  • backend/internal/attestation/init.go
  • docs/content/guides/guides/applications/application-settings.mdx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/tests/AttestationSection.test.tsx
  • backend/internal/attestation/composite_test.go
  • backend/cmd/server/servicemanager.go
  • backend/internal/attestation/composite.go
  • backend/go.mod
  • backend/internal/attestation/error_constants.go
  • backend/internal/flow/flowexec/service_test.go
  • frontend/packages/i18n/src/locales/en-US.ts
  • backend/internal/application/service.go
  • backend/pkg/thunderidengine/providers/model.go
  • docs/content/guides/key-concepts/authentication/integration-models.mdx
  • backend/pkg/thunderidengine/providers/model_test.go
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/AttestationSection.tsx
  • backend/internal/application/service_test.go
  • backend/internal/attestation/app_attest.go

📝 Walkthrough

Walkthrough

Adds Apple App Attest support alongside Android Play Integrity across API schemas, backend verification and flow enforcement, console configuration, integration tests, and documentation. Applications now require exactly one attestation platform.

Changes

Platform attestation

Layer / File(s) Summary
Attestation contracts and application validation
api/application.yaml, backend/pkg/thunderidengine/providers/*, backend/internal/application/*, backend/go.mod
Adds Apple attestation fields, enforces exclusive platform configuration, preserves Apple settings during persistence, and promotes CBOR to a direct dependency.
Apple App Attest verification
backend/internal/attestation/app_attest*, backend/internal/attestation/model.go, backend/internal/attestation/error_constants.go
Adds certificate, CBOR, authenticator-data, AAGUID, application-identifier, and credential-ID validation with unit coverage.
Provider wiring and flow enforcement
backend/internal/attestation/{composite.go,init.go}, backend/internal/flow/flowexec/*, backend/cmd/server/servicemanager.go, backend/pkg/thunderidengine/engine.go, tests/integration/flow/authentication/*
Routes configured Android or Apple attestation to the matching verifier, handles initialization failures, and enforces Apple tokens during direct flow initiation.
Console platform configuration
frontend/apps/console/src/features/applications/..., frontend/packages/i18n/src/locales/en-US.ts
Adds platform selection, Apple Team ID and Bundle ID fields, platform-aware emission and synchronization, validation propagation, and UI test coverage.
Platform attestation documentation
docs/content/guides/guides/applications/application-settings.mdx, docs/content/guides/key-concepts/authentication/integration-models.mdx
Documents Android and iOS attestation configuration, token headers, precedence, and continuation behavior.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant MobileClient
  participant FlowExec
  participant CompositeVerifier
  participant AppAttestVerifier
  MobileClient->>FlowExec: POST /flow/execute with Attestation-Token
  FlowExec->>CompositeVerifier: Verify configured attestation
  CompositeVerifier->>AppAttestVerifier: Verify Apple App Attest token
  AppAttestVerifier-->>CompositeVerifier: Verification result
  CompositeVerifier-->>FlowExec: Verification result
  FlowExec-->>MobileClient: Accept or reject flow initiation
Loading

Possibly related issues

Possibly related PRs

Suggested reviewers: donomalvindula, thamindudilshan, brionmario, thiva-k, rajithacharith

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 45.95% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed Clear, specific title matching the main change: adding Apple App Attest support for mobile clients.
Description check ✅ Passed Covers purpose, approach, related issues/PRs, and tests; only the template’s checklist and security sections are missing.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install timed out. The project may have too many dependencies for the sandbox.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 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 `@api/application.yaml`:
- Around line 1375-1380: Update the attestation schema object around the android
and apple properties to require exactly one platform using mutually exclusive
oneOf branches, each requiring its corresponding property. Ensure
AndroidAttestation and AppleAttestation enforce all required platform
identifiers so empty objects such as apple: {} are rejected, while preserving
the existing platform references.

In `@backend/internal/attestation/appattest.go`:
- Around line 50-58: Extend the App Attest verification flow to require a
server-issued, per-request challenge and validate the attestation’s nonce
extension (OID 1.2.840.113635.100.8.2) against it before accepting the
attestation as authorization. Update the verifier and its callers to issue,
bind, consume, and reject missing, mismatched, or replayed challenges, removing
the current limitation described in the verification comment.

In `@backend/internal/attestation/composite.go`:
- Around line 29-60: Add unit tests for newCompositeVerifier and
compositeVerifier.Verify covering Android dispatch, Apple dispatch, and missing
or nil platform configuration returning false with
tidcommon.InternalServerError. Use mock providers to verify the selected
provider receives the request while the other is not called, and target at least
80% coverage of the dispatcher logic.

In `@docs/content/guides/guides/applications/application-settings.mdx`:
- Line 135: Clarify the attestation configuration wording in
docs/content/guides/guides/applications/application-settings.mdx:135-135 and
docs/content/guides/key-concepts/authentication/integration-models.mdx:87-87 so
attestation remains optional, while exactly one platform is required when
attestation is enabled; keep both descriptions consistent.

In `@docs/content/guides/key-concepts/authentication/integration-models.mdx`:
- Line 102: Update the authentication response description in the
integration-models guide to say that invalid or malformed tokens receive 401
Unauthorized, rather than claiming every verification failure does. Preserve the
existing 401 behavior for omitted tokens and the continuation-request exception,
while leaving verifier outage behavior accurately distinguishable.

In
`@frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/AttestationSection.tsx`:
- Around line 191-195: Update every newly added i18n call in the
AttestationSection, including the platformOptions labels and all changed labels,
placeholders, hints, and actions through the referenced ranges, to provide an
appropriate fallback default string using the surrounding translation-call
convention. Do not alter the translation keys or unrelated existing calls.

In `@frontend/apps/console/src/features/applications/models/oauth.ts`:
- Around line 479-488: Enforce complete Apple attestation identity across all
listed sites: in oauth.ts, make AppleAttestationConfig.teamId and bundleId
required; in AttestationSection.tsx sites 165-176, emit Apple configuration only
when both values are populated, at 212-220 mark either missing value as a
validation error, and at 352-382 display both required-field errors and
propagate validation to the page Save state; in AttestationSection.test.tsx,
replace the Team ID-only expectation with incomplete-input and
complete-configuration cases.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 49971c9b-2b0e-46bf-a235-1664c1c81651

📥 Commits

Reviewing files that changed from the base of the PR and between 08aeb38 and ebbcca0.

📒 Files selected for processing (24)
  • api/application.yaml
  • backend/go.mod
  • backend/internal/application/error_constants.go
  • backend/internal/application/service.go
  • backend/internal/application/service_test.go
  • backend/internal/attestation/appattest.go
  • backend/internal/attestation/appattest_constants.go
  • backend/internal/attestation/appattest_test.go
  • backend/internal/attestation/composite.go
  • backend/internal/attestation/error_constants.go
  • backend/internal/attestation/init.go
  • backend/internal/flow/flowexec/service.go
  • backend/internal/flow/flowexec/service_test.go
  • backend/internal/system/i18n/core/defaults.go
  • backend/pkg/thunderidengine/providers/model.go
  • backend/pkg/thunderidengine/providers/model_test.go
  • docs/content/guides/guides/applications/application-settings.mdx
  • docs/content/guides/key-concepts/authentication/integration-models.mdx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/AttestationSection.tsx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/__tests__/AttestationSection.roundtrip.test.tsx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/__tests__/AttestationSection.test.tsx
  • frontend/apps/console/src/features/applications/models/oauth.ts
  • frontend/packages/i18n/src/locales/en-US.ts
  • tests/integration/flow/authentication/apple_attestation_flow_test.go

Comment thread api/application.yaml
Comment thread backend/internal/attestation/app_attest.go Outdated
Comment thread backend/internal/attestation/composite.go
Comment thread docs/content/guides/guides/applications/application-settings.mdx Outdated
Comment thread docs/content/guides/key-concepts/authentication/integration-models.mdx Outdated
Comment thread frontend/apps/console/src/features/applications/models/oauth.ts Outdated
Comment thread backend/internal/attestation/app_attest_test.go Outdated
Comment thread backend/internal/attestation/app_attest.go
Comment thread backend/internal/attestation/appattest.go Outdated
Comment thread backend/internal/attestation/appattest.go Outdated
Comment thread backend/internal/attestation/appattest.go Outdated
Comment thread backend/internal/attestation/appattest.go Outdated
// appleAppAttestRootPEM is Apple's public "Apple App Attestation Root CA" certificate, published at
// https://www.apple.com/certificateauthority/Apple_App_Attestation_Root_CA.pem. It is a public trust
// anchor, not a secret.
const appleAppAttestRootPEM = `-----BEGIN CERTIFICATE-----

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't keep this hard coded in source files right?
cc: @rajithacharith

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be moved to get from the deployment or unless we have download it from the above url. This current cert is valid until 2045.

@ThaminduDilshan ThaminduDilshan Jul 16, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's have a config for this. We can keep the certificate in default.json.
Let's do this in a follow up PR.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ack

Comment thread backend/internal/attestation/app_attest_test.go Outdated
Comment thread backend/internal/attestation/app_attest_test.go Outdated
@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

@Malith-19
Malith-19 force-pushed the feat/3452-apple-app-attest branch from ebbcca0 to 9aa5702 Compare July 16, 2026 10:39
@github-actions

Copy link
Copy Markdown

Dependency Validation Results

Dependency name: github.com/fxamacker/cbor/v2
Version: v2.9.2
Approved: ❌ No - Module not found in dependency registry


Next Steps

  1. Review the validation failures listed above
  2. Check if dependencies are in the approved dependency list
  3. Options to resolve:
    • Remove the unapproved dependencies from this PR
    • OR submit a PR to add these dependencies to the approved list in engineering-governance
  4. Once resolved, push changes to re-run validation

This PR is blocked until all dependencies are approved.

⚠️ Please verify the scope of the dependencies usage is necessary

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
backend/internal/attestation/app_attest.go (1)

42-47: 🔒 Security & Privacy | 🔴 Critical | 🏗️ Heavy lift

Reject replayable App Attest objects.

As noted in the comment, omitting the nonce validation (OID 1.2.840.113635.100.8.2) allows a captured attestation object to be replayed indefinitely to bypass the attestation gate for the same app and device. A server-issued, challenge-bound nonce validation must be implemented before treating App Attest as a reliable authorization signal.

Do you want me to help generate a server-issued challenge mechanism and the corresponding validation logic?

🤖 Prompt for 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.

In `@backend/internal/attestation/app_attest.go` around lines 42 - 47, Implement a
server-issued challenge mechanism for the App Attest verification flow in the
attestation verifier, and validate the nonce extension OID
1.2.840.113635.100.8.2 against the expected challenge before accepting the
attestation. Ensure challenge issuance, binding, expiration or one-time use, and
validation occur before treating the attested app as authorized, removing the
current replay limitation.
🧹 Nitpick comments (1)
backend/internal/attestation/app_attest.go (1)

78-81: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove redundant nil checks.

Based on learnings, avoid adding redundant defensive nil-guards when the dependency cannot be nil given the call graph. The compositeVerifier (which delegates to this method) already enforces cfg != nil && cfg.Apple != nil before calling this Verify method.

♻️ Proposed refactor
-	if cfg == nil || cfg.Apple == nil {
-		v.logger.Error(ctx, "Attestation requested without an Apple attestation configuration")
-		return false, &tidcommon.InternalServerError
-	}
-
🤖 Prompt for 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.

In `@backend/internal/attestation/app_attest.go` around lines 78 - 81, Remove the
redundant cfg == nil || cfg.Apple == nil guard from the Verify method in
app_attest.go, including its associated error log and early return. Rely on
compositeVerifier’s existing validation before delegating to Verify, while
preserving the remaining attestation verification behavior.

Source: Learnings

🤖 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
`@frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/__tests__/AttestationSection.test.tsx`:
- Around line 126-137: Extend the incomplete Apple attestation test coverage
around AttestationSection to assert onValidationChange(true) while required
fields are incomplete, then assert it resets to false after completing the
fields or clearing the section. Preserve the existing emission-suppression
assertions and verify the validation callback transitions for both relevant
scenarios.

In `@frontend/apps/console/src/features/applications/models/oauth.ts`:
- Around line 439-451: Update AttestationConfig to an exclusive union of
Android-only and Apple-only configuration variants, requiring exactly one
platform and disallowing both an empty object and simultaneous android/apple
properties. Preserve the existing AndroidAttestationConfig and
AppleAttestationConfig types while making the mutually exclusive shape
enforceable at compile time.

---

Duplicate comments:
In `@backend/internal/attestation/app_attest.go`:
- Around line 42-47: Implement a server-issued challenge mechanism for the App
Attest verification flow in the attestation verifier, and validate the nonce
extension OID 1.2.840.113635.100.8.2 against the expected challenge before
accepting the attestation. Ensure challenge issuance, binding, expiration or
one-time use, and validation occur before treating the attested app as
authorized, removing the current replay limitation.

---

Nitpick comments:
In `@backend/internal/attestation/app_attest.go`:
- Around line 78-81: Remove the redundant cfg == nil || cfg.Apple == nil guard
from the Verify method in app_attest.go, including its associated error log and
early return. Rely on compositeVerifier’s existing validation before delegating
to Verify, while preserving the remaining attestation verification behavior.
🪄 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 Plus

Run ID: e292aa11-e84b-4f14-9e22-55b6031d2abe

📥 Commits

Reviewing files that changed from the base of the PR and between ebbcca0 and 9aa5702.

📒 Files selected for processing (28)
  • api/application.yaml
  • backend/cmd/server/servicemanager.go
  • backend/go.mod
  • backend/internal/application/error_constants.go
  • backend/internal/application/service.go
  • backend/internal/application/service_test.go
  • backend/internal/attestation/app_attest.go
  • backend/internal/attestation/app_attest_constants.go
  • backend/internal/attestation/app_attest_test.go
  • backend/internal/attestation/composite.go
  • backend/internal/attestation/composite_test.go
  • backend/internal/attestation/error_constants.go
  • backend/internal/attestation/init.go
  • backend/internal/attestation/model.go
  • backend/internal/flow/flowexec/service.go
  • backend/internal/flow/flowexec/service_test.go
  • backend/internal/system/i18n/core/defaults.go
  • backend/pkg/thunderidengine/engine.go
  • backend/pkg/thunderidengine/providers/model.go
  • backend/pkg/thunderidengine/providers/model_test.go
  • docs/content/guides/guides/applications/application-settings.mdx
  • docs/content/guides/key-concepts/authentication/integration-models.mdx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/AttestationSection.tsx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/__tests__/AttestationSection.roundtrip.test.tsx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/__tests__/AttestationSection.test.tsx
  • frontend/apps/console/src/features/applications/models/oauth.ts
  • frontend/packages/i18n/src/locales/en-US.ts
  • tests/integration/flow/authentication/apple_attestation_flow_test.go
🚧 Files skipped from review as they are similar to previous changes (17)
  • backend/internal/system/i18n/core/defaults.go
  • backend/internal/attestation/error_constants.go
  • backend/internal/flow/flowexec/service.go
  • backend/internal/attestation/composite.go
  • backend/internal/application/service_test.go
  • backend/pkg/thunderidengine/providers/model.go
  • backend/internal/application/error_constants.go
  • backend/internal/application/service.go
  • docs/content/guides/key-concepts/authentication/integration-models.mdx
  • frontend/packages/i18n/src/locales/en-US.ts
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/tests/AttestationSection.roundtrip.test.tsx
  • tests/integration/flow/authentication/apple_attestation_flow_test.go
  • backend/internal/flow/flowexec/service_test.go
  • api/application.yaml
  • docs/content/guides/guides/applications/application-settings.mdx
  • frontend/apps/console/src/features/applications/components/edit-application/advanced-settings/AttestationSection.tsx
  • backend/go.mod

Comment thread frontend/apps/console/src/features/applications/models/oauth.ts Outdated
@Malith-19
Malith-19 force-pushed the feat/3452-apple-app-attest branch from 9aa5702 to 01fc304 Compare July 16, 2026 10:53
@github-actions

Copy link
Copy Markdown

Dependency Validation Results

Dependency name: github.com/fxamacker/cbor/v2
Version: v2.9.2
Approved: ❌ No - Module not found in dependency registry


Next Steps

  1. Review the validation failures listed above
  2. Check if dependencies are in the approved dependency list
  3. Options to resolve:
    • Remove the unapproved dependencies from this PR
    • OR submit a PR to add these dependencies to the approved list in engineering-governance
  4. Once resolved, push changes to re-run validation

This PR is blocked until all dependencies are approved.

⚠️ Please verify the scope of the dependencies usage is necessary

@Malith-19
Malith-19 force-pushed the feat/3452-apple-app-attest branch from 01fc304 to ab67c2c Compare July 16, 2026 10:58
@github-actions

Copy link
Copy Markdown

Dependency Validation Results

Dependency name: github.com/fxamacker/cbor/v2
Version: v2.9.2
Approved: ❌ No - Module not found in dependency registry


Next Steps

  1. Review the validation failures listed above
  2. Check if dependencies are in the approved dependency list
  3. Options to resolve:
    • Remove the unapproved dependencies from this PR
    • OR submit a PR to add these dependencies to the approved list in engineering-governance
  4. Once resolved, push changes to re-run validation

This PR is blocked until all dependencies are approved.

⚠️ Please verify the scope of the dependencies usage is necessary

@github-actions

Copy link
Copy Markdown

Dependency Validation Results

Dependency name: github.com/fxamacker/cbor/v2
Version: v2.9.2
Allowed range: >=v2.9.2
Approved: ✅ Yes

⚠️ Please verify the scope of the dependencies usage is necessary

@Malith-19
Malith-19 force-pushed the feat/3452-apple-app-attest branch from ab67c2c to 99e7469 Compare July 16, 2026 11:28
@github-actions

Copy link
Copy Markdown

Dependency Validation Results

Dependency name: github.com/fxamacker/cbor/v2
Version: v2.9.2
Allowed range: >=v2.9.2
Approved: ✅ Yes

⚠️ Please verify the scope of the dependencies usage is necessary

@github-actions

Copy link
Copy Markdown

Dependency Validation Results

Dependency name: github.com/fxamacker/cbor/v2
Version: v2.9.2
Allowed range: >=v2.9.2
Approved: ✅ Yes

⚠️ Please verify the scope of the dependencies usage is necessary

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add platform attestation (Apple App Attest / Google Play Integrity) for mobile clients at flow initiation

2 participants