Skip to main content

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" />
),
},
// ..
});

参见使用代理提供商登录了解如何设置登录页面,以便本地开发也能顺利进行。