- Đăng vào
Tích hợp SSO cho Backstage dùng Azure AD (Entra ID)
Giới thiệu
Hôm trước mình có giới thiệu bài viết: Cài đặt và thiết lập Backstage trên Kubernetes với Argo CD, như đã hứa, bài viết này mình sẽ hướng dẫn tích hợp tính năng Single Sign On (SSO) cho Backstage sử dụng Microsoft Entra ID (Azure AD)
Chỉnh sửa source code
Đầu tiên, mình sử dụng Microsoft Azure Authentication Provider, các bước hướng dẫn đã rất chi tiết: https://backstage.io/docs/auth/microsoft/provider/ mình sẽ không nói lại.
Tới phần Adding the provider to the Backstage frontend docs chỉ đề cập tới ví dụ về Sign in using GitHub, phần Sign in using Microsoft sẽ làm tương tự:
import { microsoftAuthApiRef } from '@backstage/core-plugin-api';
import {
AlertDisplay,
OAuthRequestDialog,
SignInPage,
} from '@backstage/core-components';
const app = createApp({
apis,
plugins: [badgesPlugin],
components: {
SignInPage: props => (
<SignInPage
{...props}
auto
provider={{
id: 'microsoft-auth-provider',
title: 'Microsoft',
message: 'Sign in using Microsoft',
apiRef: microsoftAuthApiRef,
}}
/>
),
},
// ..
});
Tiếp theo, khai báo 1 user cho team-a
.
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: your-user-name
spec:
profile:
email: your-email@corp.com
memberOf: [team-a]
File sso-user.yaml
lưu ở ngoài thư mục gốc của demo repository.
Sau khi chỉnh xong, thì nhớ build lại docker image và đẩy lên artifactory.
Tạo secrets chứa thông tin Entra ID app
Tạo secret chứa thông tin của Entra ID app cũng như một vài thông số khác
apiVersion: v1
stringData:
BACKEND_AUTH_KEY: <your-secret>
GHC_TOKEN: <your-token>
PORT: "7007"
AZURE_CLIENT_SECRET: <client-secret>
AZURE_CLIENT_ID: <client-id>
AZURE_TENANT_ID: <tenant-id>
kind: Secret
metadata:
name: app-secrets
namespace: backstage
type: Opaque
Tốt nhất là nên đóng gói secrets.yaml
bằng SealedSecret và lưu trên Git một cách an toàn.
Chỉnh sửa lại app-config.yaml
Ở bài viết trước, app-config.yaml
của Backstage được lưu trong Configmap, chi tiết có thể xem thêm app-config.yaml
Dưới đây là một vài cập nhật cho app-config.yaml để có thể tích hợp SSO được
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
annotations:
argocd.argoproj.io/sync-wave: "-1"
data:
main.yaml: |
enableExperimentalRedirectFlow: true
# ...
auth:
environment: production
providers:
# ...
microsoft:
production:
clientId: ${AZURE_CLIENT_ID}
clientSecret: ${AZURE_CLIENT_SECRET}
tenantId: ${AZURE_TENANT_ID}
domainHint: ${AZURE_TENANT_ID}
signIn:
resolvers:
- resolver: emailMatchingUserEntityProfileEmail
# ...
catalog:
# ...
locations:
# ...
# Add user
- type: file
target: sso-user.yaml
# ...

Kết luận
- Trên đây là các bước cơ bản để chúng ta có thể tích hợp SSO cho Backstage.
- Đối với các workflow phức tạp hơn chúng ta cần chỉnh sửa source code nhiều hơn.
Chúc thành công,
ANH NGUYỄN