umbraco-auth-provider by umbraco/umbraco-cms-backoffice-skills
npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-auth-provider认证提供程序为 Umbraco 后台启用了外部登录(OAuth/SSO)。它提供了连接到后端认证提供程序的 UI 组件(登录按钮)。后端必须在 C# 中单独配置——此扩展类型处理前端呈现和行为。常见的提供程序包括 Google、Microsoft、GitHub 和自定义 OAuth 提供程序。
在实现之前,请务必获取最新文档:
{
"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"
}
}
}
]
}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
import type { ManifestAuthProvider } from '@umbraco-cms/backoffice/extension-registry';
const manifest: ManifestAuthProvider = {
type: 'authProvider',
alias: 'My.AuthProvider.Google',
name: 'Google Login',
forProviderName: 'Umbraco.Google', // 必须与后端提供程序名称匹配
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() {
// 分发事件以触发认证流程
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;
const manifest: ManifestAuthProvider = {
type: 'authProvider',
alias: 'My.AuthProvider.EnterpriseSSO',
name: 'Enterprise SSO',
forProviderName: 'Umbraco.EnterpriseSSO',
meta: {
label: 'Enterprise Login',
behavior: {
autoRedirect: true, // 自动重定向到提供程序
},
},
};
// 用于注册提供程序的 Composer
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" }
);
});
});
}
}
| 属性 | 描述 |
|---|---|
label | 按钮文本 |
defaultView.icon | 按钮图标 |
defaultView.color | 按钮颜色 (default, positive, warning, danger) |
defaultView.look | 按钮样式 (default, primary, secondary, outline) |
behavior.autoRedirect | 在登录页面自动重定向到提供程序 |
behavior.popupTarget | 弹出窗口的名称 |
behavior.popupFeatures | 弹出窗口特性 |
linking.allowManualLinking | 允许链接到现有账户 |
icon-google - Googleicon-microsoft - Microsofticon-github - GitHubicon-facebook - Facebookicon-twitter / icon-x - Twitter/Xicon-cloud - 通用 OAuth就是这样!请务必获取最新文档,保持示例简洁,生成完整可用的代码。
每周安装次数
77
代码仓库
GitHub 星标数
17
首次出现
2026年2月4日
安全审计
安装于
github-copilot56
cursor26
opencode24
codex24
gemini-cli22
amp22
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 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;
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 |
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.
Weekly Installs
77
Repository
GitHub Stars
17
First Seen
Feb 4, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
github-copilot56
cursor26
opencode24
codex24
gemini-cli22
amp22
.NET和Python后端全局错误处理配置指南:异常中间件与自定义异常
218 周安装
演示文稿设计专家指南:结构、原则与听众适应策略,打造说服力强的设计汇报
77 周安装
Claude-to-IM 桥接技能:一键连接 Claude AI 到 Telegram、飞书、微信等主流通讯平台
3,700 周安装
Flutter原生视图与网页嵌入指南:Android/iOS平台视图集成与Web应用嵌入
3,800 周安装
Hono Web框架使用指南:API参考、CLI测试与路由配置教程
3,700 周安装
SLO实施指南:SLI/SLO/错误预算框架,Prometheus监控与可靠性目标设定
3,700 周安装
Readwise Surprise-Me:AI阅读数据分析工具,揭示隐藏的阅读模式和思维洞察
77 周安装
| Window name for popup |
behavior.popupFeatures | Popup window features |
linking.allowManualLinking | Allow linking to existing accounts |