OAuth 2 代理提供程序
Backstage@backstage/plugin-auth-backend
软件包附带一个oauth2Proxy
身份验证提供商,可以通过使用oauth2 代理这样就可以在一个群集内重复使用现有的身份验证。 一般来说,"............oauth2-proxy
支持所有 OpenID Connect 提供商,更多详情请查看此处受支持的供应商名单.
配置
可将提供程序配置添加到您的app-config.yaml
根目录下auth
配置:
app-config.yaml
auth:
environment: development
providers:
oauth2Proxy:
development: {}
目前不支持任何配置选项,但需要空对象才能在授权后端启用提供程序。
要使用oauth2Proxy
有关登录过程的更多信息,请 参见登录身份和解析器文件。
对于oauth2Proxy
提供商,其登录结果与其他提供商有很大不同。 因为它是一个代理提供商,可以通过任意标头配置来转发信息,所以认证结果只是让你访问传入请求的 HTTP 标头。 利用这些标头,你可以直接提取信息,或者获取 ID 或访问令牌来查找其他信息和/或验证请求。
例如,一个简单的登录解析器可能是这样的:
providerFactories: {
...defaultAuthProviderFactories,
oauth2Proxy: providers.oauth2Proxy.create({
signIn: {
async resolver({ result }, ctx) {
const name = result.getHeader('x-forwarded-user');
if (!name) {
throw new Error('Request did not contain a user')
}
return ctx.signInWithCatalogUser({
entityRef: { name },
});
},
},
}),
},
将提供程序添加到 Backstage 前端
建议使用ProxiedSignInPage
安装在packages/app/src/App.tsx
像这样
packages/app/src/App.tsx
import { ProxiedSignInPage } from '@backstage/core-components';
const app = createApp({
components: {
SignInPage: props => (
<ProxiedSignInPage {...props} provider="oauth2Proxy" />
),
},
// ..
});
参见使用代理提供商登录了解如何设置登录页面,以便本地开发也能顺利进行。