umbraco-auth-provider

Umbraco Auth Provider

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "umbraco-auth-provider" with this command: npx skills add umbraco/umbraco-cms-backoffice-skills/umbraco-umbraco-cms-backoffice-skills-umbraco-auth-provider

Umbraco Auth Provider

What is it?

An Auth Provider enables external login (OAuth/SSO) for the Umbraco backoffice. It provides the UI component (login button) that connects to a backend authentication provider. The backend must be configured separately in C# - this extension type handles the frontend presentation and behavior. Common providers include Google, Microsoft, GitHub, and custom OAuth providers.

Documentation

Always fetch the latest docs before implementing:

Workflow

  • Fetch docs - Use WebFetch on the URLs above

  • Ask questions - Which OAuth provider? Custom UI needed? Auto-redirect?

  • Configure backend - Set up C# authentication provider first

  • Generate frontend files - Create manifest + optional custom element

  • Explain - Show what was created and how to test

Minimal Examples

Manifest with Default Button (umbraco-package.json)

{ "name": "My Auth Provider", "extensions": [ { "type": "authProvider", "alias": "My.AuthProvider.GitHub", "name": "GitHub Login", "forProviderName": "Umbraco.GitHub", "meta": { "label": "Login with GitHub", "defaultView": { "icon": "icon-github", "color": "default", "look": "secondary" } } } ] }

Manifest (TypeScript)

import type { ManifestAuthProvider } from '@umbraco-cms/backoffice/extension-registry';

const manifest: ManifestAuthProvider = { type: 'authProvider', alias: 'My.AuthProvider.Google', name: 'Google Login', forProviderName: 'Umbraco.Google', // Must match backend provider name meta: { label: 'Sign in with Google', defaultView: { icon: 'icon-google', color: 'default', look: 'outline', }, behavior: { autoRedirect: false, popupTarget: 'umbracoAuthPopup', popupFeatures: 'width=600,height=600,menubar=no,location=no', }, linking: { allowManualLinking: true, }, }, };

export const manifests = [manifest];

Custom Login Button Element

import type { ManifestAuthProvider } from '@umbraco-cms/backoffice/extension-registry';

const manifest: ManifestAuthProvider = { type: 'authProvider', alias: 'My.AuthProvider.Custom', name: 'Custom SSO Login', forProviderName: 'Umbraco.CustomSSO', element: () => import('./custom-auth-button.element.js'), meta: { label: 'Enterprise SSO', }, };

Custom Button Element (custom-auth-button.element.ts)

import { html, css, customElement, property } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';

@customElement('my-custom-auth-button') export class MyCustomAuthButtonElement extends UmbLitElement { @property({ type: String }) providerName = '';

@property({ type: String }) displayName = '';

#handleClick() { // Dispatch event to trigger auth flow this.dispatchEvent( new CustomEvent('auth-request', { bubbles: true, composed: true, detail: { providerName: this.providerName }, }) ); }

render() { return html <button @click=${this.#handleClick}> <img src="/App_Plugins/MyAuth/logo.svg" alt="" /> <span>${this.displayName}</span> </button> ; }

static styles = css` button { display: flex; align-items: center; gap: var(--uui-size-space-3); width: 100%; padding: var(--uui-size-space-4); border: 1px solid var(--uui-color-border); border-radius: var(--uui-border-radius); background: var(--uui-color-surface); cursor: pointer; }

button:hover {
  background: var(--uui-color-surface-alt);
}

img {
  width: 24px;
  height: 24px;
}

`; }

export default MyCustomAuthButtonElement;

Auto-Redirect Provider (Single Sign-On)

const manifest: ManifestAuthProvider = { type: 'authProvider', alias: 'My.AuthProvider.EnterpriseSSO', name: 'Enterprise SSO', forProviderName: 'Umbraco.EnterpriseSSO', meta: { label: 'Enterprise Login', behavior: { autoRedirect: true, // Automatically redirects to provider }, }, };

Backend C# Configuration (for reference)

// Composer to register the provider public class GitHubAuthenticationComposer : IComposer { public void Compose(IUmbracoBuilder builder) { builder.AddBackOfficeExternalLogins(logins => { logins.AddBackOfficeLogin( backOfficeAuthenticationBuilder => { backOfficeAuthenticationBuilder.AddGitHub( backOfficeAuthenticationBuilder.SchemeForBackOffice("Umbraco.GitHub")!, options => { options.ClientId = "your-client-id"; options.ClientSecret = "your-client-secret"; options.CallbackPath = "/umbraco-github-signin"; }); }, options => { options.AutoLinkOptions = new ExternalSignInAutoLinkOptions( autoLinkExternalAccount: true, defaultUserGroups: new[] { "admin" } ); }); }); } }

Meta Properties

Property Description

label

Button text

defaultView.icon

Button icon

defaultView.color

Button color (default, positive, warning, danger)

defaultView.look

Button style (default, primary, secondary, outline)

behavior.autoRedirect

Auto-redirect to provider on login page

behavior.popupTarget

Window name for popup

behavior.popupFeatures

Popup window features

linking.allowManualLinking

Allow linking to existing accounts

Common Icons

  • icon-google

  • Google

  • icon-microsoft

  • Microsoft

  • icon-github

  • GitHub

  • icon-facebook

  • Facebook

  • icon-twitter / icon-x

  • Twitter/X

  • icon-cloud

  • Generic OAuth

That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

umbraco-backoffice

No summary provided by upstream source.

Repository SourceNeeds Review
General

umbraco-dashboard

No summary provided by upstream source.

Repository SourceNeeds Review
General

umbraco-quickstart

No summary provided by upstream source.

Repository SourceNeeds Review
General

umbraco-extension-template

No summary provided by upstream source.

Repository SourceNeeds Review