用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/umbraco/Umbraco-CMS-Backoffice-Skills --skill umbraco-auth-provider命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Run tests from skill examples and generate a report (project)
Validate links and references in SKILL.md files using deterministic scripts
Umbraco backoffice extension customisation - complete working examples showing how extension types combine
正在显示 SKILL.md
基于 SOC 职业分类
| name | umbraco-auth-provider |
| description | Implement authentication providers for Umbraco backoffice using official docs |
| version | 1.0.0 |
| location | managed |
| allowed-tools | Read, Write, Edit, WebFetch |
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.
Always fetch the latest docs before implementing:
{
"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"
}
}
}
]
}
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];
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',
},
};
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 = = />
;
}
styles = css`;
}
;
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
},
},
};
// 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" }
);
});
});
}
}
| 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 |
icon-google - Googleicon-microsoft - Microsofticon-github - GitHubicon-facebook - Facebookicon-twitter / icon-x - Twitter/Xicon-cloud - Generic OAuthThat's it! Always fetch fresh docs, keep examples minimal, generate complete working code.