---
title: ASCredentialProviderViewController
framework: authenticationservices
role: symbol
role_heading: Class
path: authenticationservices/ascredentialproviderviewcontroller
---

# ASCredentialProviderViewController

A view controller that a credential manager app uses to extend AutoFill.

## Declaration

```swift
class ASCredentialProviderViewController
```

## Overview

Overview To integrate a password, passkey, or one-time passcode manager app with AutoFill: Add a Credential Provider Extension target to your project that subclasses ASCredentialProviderViewController. Add the AutoFill Credential Provider Entitlement to both the extension and its containing app. Override the view controller’s prepareCredentialList(for:) method to prepare a view with a list of credentials that the person can choose from after opening your extension from the AutoFill suggestions list. Optionally add ASPasswordCredentialIdentity and ASPasskeyCredentialIdentity instances to the shared ASCredentialIdentityStore to make identities available directly in the AutoFill suggestions list. Then override the provideCredentialWithoutUserInteraction(for:) method to provide the associated credentials when the person taps a suggestion. Optionally, override the prepareInterfaceForExtensionConfiguration() method to specify a configuration interface that you can show when people first enable your credentials manager in Settings. Receiving credential updates Apps and websites that allow sign-ins can signal updates to the operating system with the ASCredentialUpdater class. The various “report” methods of ASCredentialUpdater work like the “signal” methods of PublicKeyCredential when using WebAuthn on the web. For example, a website or app can notify credential manager apps that it updated a user name or email for a given account, allowing the manager to stay consistent with the website. Your credential manager manager receives these updates in the “report” methods of ASCredentialProviderViewController. Use these calls to update your manager’s stored credential data or behavior. For example, a call to reportUnusedPasswordCredential(forDomain:userName:) can indicate that someone using a passkey will no longer use a password to sign in to a given domain, or that they deleted their account. In this case, the manager should stop showing the user name and password for that domain. note: This class ignores calls from Mac apps built with Mac Catalyst.

## Topics

### Getting the extension context

- [extensionContext](authenticationservices/ascredentialproviderviewcontroller/extensioncontext.md)
- [ASCredentialProviderExtensionContext](authenticationservices/ascredentialproviderextensioncontext.md)

### Configuring the credential provider extension

- [prepareInterfaceForExtensionConfiguration()](authenticationservices/ascredentialproviderviewcontroller/prepareinterfaceforextensionconfiguration().md)
- [ASCredentialIdentityStore](authenticationservices/ascredentialidentitystore.md)

### Selecting a credential

- [prepareCredentialList(for:)](authenticationservices/ascredentialproviderviewcontroller/preparecredentiallist(for:).md)
- [prepareCredentialList(for:requestParameters:)](authenticationservices/ascredentialproviderviewcontroller/preparecredentiallist(for:requestparameters:).md)
- [prepareOneTimeCodeCredentialList(for:)](authenticationservices/ascredentialproviderviewcontroller/prepareonetimecodecredentiallist(for:).md)
- [prepareInterface(forPasskeyRegistration:)](authenticationservices/ascredentialproviderviewcontroller/prepareinterface(forpasskeyregistration:).md)
- [prepareInterfaceToProvideCredential(for:)](authenticationservices/ascredentialproviderviewcontroller/prepareinterfacetoprovidecredential(for:)-68qpo.md)
- [provideCredentialWithoutUserInteraction(for:)](authenticationservices/ascredentialproviderviewcontroller/providecredentialwithoutuserinteraction(for:)-3mo23.md)
- [performWithoutUserInteractionIfPossible(passkeyRegistration:)](authenticationservices/ascredentialproviderviewcontroller/performwithoutuserinteractionifpossible(passkeyregistration:).md)
- [ASCredentialServiceIdentifier](authenticationservices/ascredentialserviceidentifier.md)
- [ASCredentialRequest](authenticationservices/ascredentialrequest.md)
- [ASPasswordCredentialRequest](authenticationservices/aspasswordcredentialrequest.md)
- [ASOneTimeCodeCredentialRequest](authenticationservices/asonetimecodecredentialrequest.md)
- [ASAuthorizationPublicKeyCredentialRegistrationRequest](authenticationservices/asauthorizationpublickeycredentialregistrationrequest.md)
- [ASPasskeyCredentialRequest](authenticationservices/aspasskeycredentialrequest.md)
- [ASPasskeyCredentialRequestParameters](authenticationservices/aspasskeycredentialrequestparameters.md)

### Providing text to AutoFill

- [prepareInterfaceForUserChoosingTextToInsert()](authenticationservices/ascredentialproviderviewcontroller/prepareinterfaceforuserchoosingtexttoinsert().md)

### Recognizing errors

- [ASExtensionError](authenticationservices/asextensionerror.md)
- [ASExtensionErrorDomain](authenticationservices/asextensionerrordomain.md)
- [ASExtensionError.Code](authenticationservices/asextensionerror/code.md)

### Accessing settings

- [ASSettingsHelper](authenticationservices/assettingshelper.md)

### Receiving credential updates

- [reportAllAcceptedPublicKeyCredentials(forRelyingParty:userHandle:acceptedCredentialIDs:)](authenticationservices/ascredentialproviderviewcontroller/reportallacceptedpublickeycredentials(forrelyingparty:userhandle:acceptedcredentialids:).md)
- [reportPublicKeyCredentialUpdate(forRelyingParty:userHandle:newName:)](authenticationservices/ascredentialproviderviewcontroller/reportpublickeycredentialupdate(forrelyingparty:userhandle:newname:).md)
- [reportUnknownPublicKeyCredential(forRelyingParty:credentialID:)](authenticationservices/ascredentialproviderviewcontroller/reportunknownpublickeycredential(forrelyingparty:credentialid:).md)
- [reportUnusedPasswordCredential(forDomain:userName:)](authenticationservices/ascredentialproviderviewcontroller/reportunusedpasswordcredential(fordomain:username:).md)

### Deprecated methods

- [provideCredentialWithoutUserInteraction(for:)](authenticationservices/ascredentialproviderviewcontroller/providecredentialwithoutuserinteraction(for:)-7jlg0.md)
- [prepareInterfaceToProvideCredential(for:)](authenticationservices/ascredentialproviderviewcontroller/prepareinterfacetoprovidecredential(for:)-18ukb.md)

### Instance Methods

- [performWithoutUserInteraction(generatePasswordsRequest:)](authenticationservices/ascredentialproviderviewcontroller/performwithoutuserinteraction(generatepasswordsrequest:).md)
- [performWithoutUserInteractionIfPossible(savePasswordRequest:)](authenticationservices/ascredentialproviderviewcontroller/performwithoutuserinteractionifpossible(savepasswordrequest:).md)
- [prepareInterface(for:)](authenticationservices/ascredentialproviderviewcontroller/prepareinterface(for:)-69elg.md)
- [prepareInterface(for:)](authenticationservices/ascredentialproviderviewcontroller/prepareinterface(for:)-7ideq.md)

## Relationships

### Inherits From

- [NSViewController](appkit/nsviewcontroller.md)
- [UIViewController](uikit/uiviewcontroller.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSEditor](appkit/nseditor.md)
- [NSExtensionRequestHandling](foundation/nsextensionrequesthandling.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSeguePerforming](appkit/nssegueperforming.md)
- [NSStandardKeyBindingResponding](appkit/nsstandardkeybindingresponding.md)
- [NSTouchBarProvider](appkit/nstouchbarprovider.md)
- [NSUserActivityRestoring](appkit/nsuseractivityrestoring.md)
- [NSUserInterfaceItemIdentification](appkit/nsuserinterfaceitemidentification.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [UIActivityItemsConfigurationProviding](uikit/uiactivityitemsconfigurationproviding.md)
- [UIAppearanceContainer](uikit/uiappearancecontainer.md)
- [UIContentContainer](uikit/uicontentcontainer.md)
- [UIFocusEnvironment](uikit/uifocusenvironment.md)
- [UIPasteConfigurationSupporting](uikit/uipasteconfigurationsupporting.md)
- [UIResponderStandardEditActions](uikit/uiresponderstandardeditactions.md)
- [UIStateRestoring](uikit/uistaterestoring.md)
- [UITraitChangeObservable](uikit/uitraitchangeobservable-67e94.md)
- [UITraitEnvironment](uikit/uitraitenvironment.md)
- [UIUserActivityRestoring](uikit/uiuseractivityrestoring.md)

## See Also

### AutoFill credentials

- [Providing one-time passcodes to AutoFill](authenticationservices/providing-one-time-passcodes-to-autofill.md)
- [AutoFill Credential Provider Entitlement](bundleresources/entitlements/com.apple.developer.authentication-services.autofill-credential-provider.md)
