ادغام احراز هویت Firebase در NestJS با nestjs-firebase-auth

Summarize this content to 400 words in Persian Lang
مقدمه
مدیریت احراز هویت در یک برنامه وب مدرن می تواند چالش برانگیز باشد، به خصوص در هنگام برخورد با ارائه دهندگان هویت مختلف و ایمن کردن نقاط پایانی. احراز هویت Firebase با ارائه احراز هویت قوی خارج از جعبه، این فرآیند را ساده می کند NestJS یک چارچوب قدرتمند برای ساخت برنامه های کاربردی مقیاس پذیر ارائه می دهد.
در این پست به شما معرفی خواهم کرد @alpha018/nestjs-firebase-auth، کتابخانه ای که ادغام احراز هویت Firebase در NestJS را ساده و انعطاف پذیر می کند. چه به احراز هویت اولیه یا کنترل دسترسی مبتنی بر نقش (RBAC) با استفاده از ادعاهای سفارشی Firebase نیاز داشته باشید، این کتابخانه شما را پوشش می دهد.
چه می کند nestjs-firebase-auth انجام دهید؟
این کتابخانه قابلیت های احراز هویت NestJS را با استفاده از Firebase گسترش می دهد مدیریت SDK و پاسپورت استراتژی این ابزارهای مختلفی را ارائه می دهد که کار را آسان تر می کند:
احراز هویت کاربران از طریق توکن های Firebase.
با استفاده از ادعاهای سفارشی Firebase، نقشهای کاربر را اعتبارسنجی کنید.
استخراج توکن را سفارشی کنید و توکن های باطل شده را مدیریت کنید.
مسیرهای امن با حداقل کد دیگ بخار.
بیایید به نحوه راه اندازی کتابخانه و بررسی ویژگی های کلیدی آن بپردازیم.
نصب و راه اندازی
برای شروع، بسته را به همراه Firebase Admin SDK نصب کنید:
npm i @alpha018/nestjs-firebase-auth firebase-admin
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
همچنین باید Firebase را در پروژه خود با دانلود آن پیکربندی کنید کلید حساب خدمات از کنسول Firebase شما.
ویژگی ها و اجزای اصلی
1. پیکربندی ماژول
این FirebaseAdminModule به شما امکان می دهد Firebase را برای برنامه NestJS خود پیکربندی کنید. میتوانید رشته JSON حساب سرویس کدگذاری شده با base64 را ارسال کنید یا از گزینههای معمولی برای پیکربندی Firebase استفاده کنید.
در اینجا مثالی از نحوه وارد کردن و پیکربندی ماژول آورده شده است:
import { Module } from ‘@nestjs/common’;
import { FirebaseAuthGuard, FirebaseAdminModule } from ‘@alpha018/nestjs-firebase-auth’;
import { ConfigModule, ConfigService } from ‘@nestjs/config’;
@Module({
imports: [
ConfigModule.forRoot(),
FirebaseAdminModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
base64: configService.get(‘FIREBASE_SERVICE_ACCOUNT_BASE64’),
options: {}, // Optionally, provide Firebase configuration here
auth: {
config: {
extractor: ExtractJwt.fromAuthHeaderAsBearerToken(), // Extract JWT from the header
checkRevoked: true, // Optionally check if the token is revoked
validateRole: true, // Enable role validation if needed
},
},
}),
inject: [ConfigService],
}),
],
})
export class AppModule {}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. نگهبانان احراز هویت و اعتبارسنجی نقش
این FirebaseAuthGuard در قلب امنیت نقاط پایانی شما قرار دارد. می توانید از آن برای محافظت از مسیرها و اعتبارسنجی نشانه های کاربر استفاده کنید. اگر برنامه شما به کنترل دسترسی مبتنی بر نقش نیاز دارد، کتابخانه ادعاهای سفارشی Firebase را برای اجرای یکپارچه RBAC یکپارچه میکند.
حفاظت از مسیرها بدون تأیید نقش
اگر فقط به احراز هویت اولیه نیاز دارید، FirebaseAuthGuard اطمینان حاصل می کند که فقط کاربران تأیید شده می توانند به مسیرهای شما دسترسی داشته باشند.
import { Controller, Get, UseGuards } from ‘@nestjs/common’;
import { FirebaseAuthGuard } from ‘@alpha018/nestjs-firebase-auth’;
@Controller()
export class AppController {
@UseGuards(FirebaseAuthGuard)
@Get()
getProtectedData(): string {
return ‘This route is protected by Firebase Auth!’;
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
کنترل دسترسی مبتنی بر نقش (RBAC)
برای موارد استفاده پیشرفته تر، می توانید از ادعاهای سفارشی Firebase برای پیاده سازی دسترسی مبتنی بر نقش استفاده کنید. کتابخانه از تنظیم و اعتبارسنجی این نقش ها به راحتی پشتیبانی می کند.
در اینجا نحوه تعیین نقش کاربر آمده است:
import { Controller, Get } from ‘@nestjs/common’;
import { FirebaseProvider } from ‘@alpha018/nestjs-firebase-auth’;
enum Roles {
ADMIN = ‘ADMIN’,
USER = ‘USER’,
}
@Controller()
export class AppController {
constructor(private readonly firebaseProvider: FirebaseProvider) {}
@Get(‘/set-role’)
async setAdminRole() {
await this.firebaseProvider.setClaimsRoleBaseRoles>(‘FirebaseUID’, [Roles.ADMIN]);
return { status: ‘Admin role assigned!’ };
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
سپس، استفاده کنید RolesGuard برای اعمال اعتبار نقش برای نقاط پایانی خاص:
import { Controller, Get, UseGuards } from ‘@nestjs/common’;
import { FirebaseAuthGuard, RolesGuard } from ‘@alpha018/nestjs-firebase-auth’;
enum Roles {
ADMIN = ‘ADMIN’,
USER = ‘USER’,
}
@Controller()
export class AppController {
@RolesGuard(Roles.ADMIN, Roles.USER) // This line checks the custom claims of the Firebase user to protect the endpoint
@UseGuards(FirebaseGuard)
@Get(‘/admin’)
getAdminData(): string {
return ‘Admin-only data!’;
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. کاربر از نشانه و استخراج ادعاها
این کتابخانه بازیابی اطلاعات و ادعاهای کاربر از توکن های Firebase را آسان می کند. با استفاده از @FirebaseUser() و @FirebaseUserClaims() دکوراتورها، می توانید اطلاعات مهم را از کاربر تأیید شده استخراج کنید.
به عنوان مثال:
import { Controller, Get } from ‘@nestjs/common’;
import { FirebaseUser, FirebaseUserClaims } from ‘@alpha018/nestjs-firebase-auth’;
import { auth } from ‘firebase-admin’;
enum Roles {
ADMIN = ‘ADMIN’,
USER = ‘USER’,
}
@Controller()
export class AppController {
@Get(‘/user-info’)
getUserInfo(
@FirebaseUser() user: auth.DecodedIdToken,
@FirebaseUserClaims() claims: Roles[],
) {
return { user, claims };
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
4. رسیدگی به ابطال توکن
Firebase از ابطال توکن پشتیبانی می کند، که به شما امکان می دهد تا توکن ها را پس از صدور آنها باطل کنید. این یک ویژگی امنیتی مفید در مواقعی است که کاربر به خطر افتاده است. می توانید با فعال کردن، محافظ را طوری پیکربندی کنید که نشانه های باطل شده را به طور خودکار بررسی کند checkRevoked.
@Module({
imports: [
ConfigModule.forRoot(),
FirebaseAdminModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
base64: configService.get(‘FIREBASE_SERVICE_ACCOUNT_BASE64’),
auth: {
config: {
checkRevoked: true, // Ensure revoked tokens are invalidated
},
},
}),
inject: [ConfigService],
}),
],
})
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ابزارهای کمکی اضافی
این کتابخانه همچنین روش های سودمندی را برای مدیریت ادعاها و مدیریت منطق مبتنی بر نقش ارائه می دهد. با FirebaseProvider، می توانید ادعاها را به راحتی تنظیم، دریافت و تأیید کنید و به شما امکان می دهد سیستم های کنترل دسترسی پیچیده را با حداقل تلاش مدیریت کنید.
چرا استفاده کنید nestjs-firebase-auth?
زیبایی این کتابخانه سادگی و انعطاف پذیری آن است. با چند پیکربندی، می توانید یک سیستم احراز هویت قوی آماده راه اندازی داشته باشید. چه در حال ساخت یک پروژه کوچک باشید و چه با نیازهای امنیتی پیچیده تر، nestjs-firebase-auth تمام ابزار مورد نیاز شما را فراهم می کند.
مزایای کلیدی عبارتند از:
یکپارچه سازی Firebase بدون درز: از قدرت کامل Firebase Auth در NestJS استفاده کنید.
کنترل دسترسی مبتنی بر نقش: مسیرهای خود را با ادعاهای سفارشی ایمن کنید و نقش ها را به راحتی مدیریت کنید.
پشتیبانی از ابطال توکن: به طور خودکار توکنهای باطل شده را مدیریت کنید تا برنامه شما ایمن بماند.
استخراج کنندگان توکن سفارشی: انعطاف پذیری در نحوه استخراج و اعتبارسنجی توکن ها از درخواست ها.
نتیجه گیری
اگر به دنبال افزودن احراز هویت Firebase به پروژه NestJS خود هستید، nestjs-firebase-auth کتابخانه عالی برای شروع سریع و ایمن شماست. این فرآیند افزودن احراز هویت و اعتبار سنجی نقش را ساده می کند و API شما را با حداقل تنظیمات ایمن می کند.
به راحتی می توانید کد منبع کامل را بررسی کنید و در پروژه GitHub مشارکت کنید. بازخورد و مشارکت شما همیشه خوش آمدید!
کد نویسی مبارک!
مقدمه
مدیریت احراز هویت در یک برنامه وب مدرن می تواند چالش برانگیز باشد، به خصوص در هنگام برخورد با ارائه دهندگان هویت مختلف و ایمن کردن نقاط پایانی. احراز هویت Firebase با ارائه احراز هویت قوی خارج از جعبه، این فرآیند را ساده می کند NestJS یک چارچوب قدرتمند برای ساخت برنامه های کاربردی مقیاس پذیر ارائه می دهد.
در این پست به شما معرفی خواهم کرد @alpha018/nestjs-firebase-auth
، کتابخانه ای که ادغام احراز هویت Firebase در NestJS را ساده و انعطاف پذیر می کند. چه به احراز هویت اولیه یا کنترل دسترسی مبتنی بر نقش (RBAC) با استفاده از ادعاهای سفارشی Firebase نیاز داشته باشید، این کتابخانه شما را پوشش می دهد.
چه می کند nestjs-firebase-auth
انجام دهید؟
این کتابخانه قابلیت های احراز هویت NestJS را با استفاده از Firebase گسترش می دهد مدیریت SDK و پاسپورت استراتژی این ابزارهای مختلفی را ارائه می دهد که کار را آسان تر می کند:
- احراز هویت کاربران از طریق توکن های Firebase.
- با استفاده از ادعاهای سفارشی Firebase، نقشهای کاربر را اعتبارسنجی کنید.
- استخراج توکن را سفارشی کنید و توکن های باطل شده را مدیریت کنید.
- مسیرهای امن با حداقل کد دیگ بخار.
بیایید به نحوه راه اندازی کتابخانه و بررسی ویژگی های کلیدی آن بپردازیم.
نصب و راه اندازی
برای شروع، بسته را به همراه Firebase Admin SDK نصب کنید:
npm i @alpha018/nestjs-firebase-auth firebase-admin
همچنین باید Firebase را در پروژه خود با دانلود آن پیکربندی کنید کلید حساب خدمات از کنسول Firebase شما.
ویژگی ها و اجزای اصلی
1. پیکربندی ماژول
این FirebaseAdminModule
به شما امکان می دهد Firebase را برای برنامه NestJS خود پیکربندی کنید. میتوانید رشته JSON حساب سرویس کدگذاری شده با base64 را ارسال کنید یا از گزینههای معمولی برای پیکربندی Firebase استفاده کنید.
در اینجا مثالی از نحوه وارد کردن و پیکربندی ماژول آورده شده است:
import { Module } from '@nestjs/common';
import { FirebaseAuthGuard, FirebaseAdminModule } from '@alpha018/nestjs-firebase-auth';
import { ConfigModule, ConfigService } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot(),
FirebaseAdminModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
base64: configService.get('FIREBASE_SERVICE_ACCOUNT_BASE64'),
options: {}, // Optionally, provide Firebase configuration here
auth: {
config: {
extractor: ExtractJwt.fromAuthHeaderAsBearerToken(), // Extract JWT from the header
checkRevoked: true, // Optionally check if the token is revoked
validateRole: true, // Enable role validation if needed
},
},
}),
inject: [ConfigService],
}),
],
})
export class AppModule {}
2. نگهبانان احراز هویت و اعتبارسنجی نقش
این FirebaseAuthGuard
در قلب امنیت نقاط پایانی شما قرار دارد. می توانید از آن برای محافظت از مسیرها و اعتبارسنجی نشانه های کاربر استفاده کنید. اگر برنامه شما به کنترل دسترسی مبتنی بر نقش نیاز دارد، کتابخانه ادعاهای سفارشی Firebase را برای اجرای یکپارچه RBAC یکپارچه میکند.
حفاظت از مسیرها بدون تأیید نقش
اگر فقط به احراز هویت اولیه نیاز دارید، FirebaseAuthGuard
اطمینان حاصل می کند که فقط کاربران تأیید شده می توانند به مسیرهای شما دسترسی داشته باشند.
import { Controller, Get, UseGuards } from '@nestjs/common';
import { FirebaseAuthGuard } from '@alpha018/nestjs-firebase-auth';
@Controller()
export class AppController {
@UseGuards(FirebaseAuthGuard)
@Get()
getProtectedData(): string {
return 'This route is protected by Firebase Auth!';
}
}
کنترل دسترسی مبتنی بر نقش (RBAC)
برای موارد استفاده پیشرفته تر، می توانید از ادعاهای سفارشی Firebase برای پیاده سازی دسترسی مبتنی بر نقش استفاده کنید. کتابخانه از تنظیم و اعتبارسنجی این نقش ها به راحتی پشتیبانی می کند.
در اینجا نحوه تعیین نقش کاربر آمده است:
import { Controller, Get } from '@nestjs/common';
import { FirebaseProvider } from '@alpha018/nestjs-firebase-auth';
enum Roles {
ADMIN = 'ADMIN',
USER = 'USER',
}
@Controller()
export class AppController {
constructor(private readonly firebaseProvider: FirebaseProvider) {}
@Get('/set-role')
async setAdminRole() {
await this.firebaseProvider.setClaimsRoleBaseRoles>('FirebaseUID', [Roles.ADMIN]);
return { status: 'Admin role assigned!' };
}
}
سپس، استفاده کنید RolesGuard
برای اعمال اعتبار نقش برای نقاط پایانی خاص:
import { Controller, Get, UseGuards } from '@nestjs/common';
import { FirebaseAuthGuard, RolesGuard } from '@alpha018/nestjs-firebase-auth';
enum Roles {
ADMIN = 'ADMIN',
USER = 'USER',
}
@Controller()
export class AppController {
@RolesGuard(Roles.ADMIN, Roles.USER) // This line checks the custom claims of the Firebase user to protect the endpoint
@UseGuards(FirebaseGuard)
@Get('/admin')
getAdminData(): string {
return 'Admin-only data!';
}
}
3. کاربر از نشانه و استخراج ادعاها
این کتابخانه بازیابی اطلاعات و ادعاهای کاربر از توکن های Firebase را آسان می کند. با استفاده از @FirebaseUser()
و @FirebaseUserClaims()
دکوراتورها، می توانید اطلاعات مهم را از کاربر تأیید شده استخراج کنید.
به عنوان مثال:
import { Controller, Get } from '@nestjs/common';
import { FirebaseUser, FirebaseUserClaims } from '@alpha018/nestjs-firebase-auth';
import { auth } from 'firebase-admin';
enum Roles {
ADMIN = 'ADMIN',
USER = 'USER',
}
@Controller()
export class AppController {
@Get('/user-info')
getUserInfo(
@FirebaseUser() user: auth.DecodedIdToken,
@FirebaseUserClaims() claims: Roles[],
) {
return { user, claims };
}
}
4. رسیدگی به ابطال توکن
Firebase از ابطال توکن پشتیبانی می کند، که به شما امکان می دهد تا توکن ها را پس از صدور آنها باطل کنید. این یک ویژگی امنیتی مفید در مواقعی است که کاربر به خطر افتاده است. می توانید با فعال کردن، محافظ را طوری پیکربندی کنید که نشانه های باطل شده را به طور خودکار بررسی کند checkRevoked
.
@Module({
imports: [
ConfigModule.forRoot(),
FirebaseAdminModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
base64: configService.get('FIREBASE_SERVICE_ACCOUNT_BASE64'),
auth: {
config: {
checkRevoked: true, // Ensure revoked tokens are invalidated
},
},
}),
inject: [ConfigService],
}),
],
})
ابزارهای کمکی اضافی
این کتابخانه همچنین روش های سودمندی را برای مدیریت ادعاها و مدیریت منطق مبتنی بر نقش ارائه می دهد. با FirebaseProvider
، می توانید ادعاها را به راحتی تنظیم، دریافت و تأیید کنید و به شما امکان می دهد سیستم های کنترل دسترسی پیچیده را با حداقل تلاش مدیریت کنید.
چرا استفاده کنید nestjs-firebase-auth
?
زیبایی این کتابخانه سادگی و انعطاف پذیری آن است. با چند پیکربندی، می توانید یک سیستم احراز هویت قوی آماده راه اندازی داشته باشید. چه در حال ساخت یک پروژه کوچک باشید و چه با نیازهای امنیتی پیچیده تر، nestjs-firebase-auth
تمام ابزار مورد نیاز شما را فراهم می کند.
مزایای کلیدی عبارتند از:
- یکپارچه سازی Firebase بدون درز: از قدرت کامل Firebase Auth در NestJS استفاده کنید.
- کنترل دسترسی مبتنی بر نقش: مسیرهای خود را با ادعاهای سفارشی ایمن کنید و نقش ها را به راحتی مدیریت کنید.
- پشتیبانی از ابطال توکن: به طور خودکار توکنهای باطل شده را مدیریت کنید تا برنامه شما ایمن بماند.
- استخراج کنندگان توکن سفارشی: انعطاف پذیری در نحوه استخراج و اعتبارسنجی توکن ها از درخواست ها.
نتیجه گیری
اگر به دنبال افزودن احراز هویت Firebase به پروژه NestJS خود هستید، nestjs-firebase-auth
کتابخانه عالی برای شروع سریع و ایمن شماست. این فرآیند افزودن احراز هویت و اعتبار سنجی نقش را ساده می کند و API شما را با حداقل تنظیمات ایمن می کند.
به راحتی می توانید کد منبع کامل را بررسی کنید و در پروژه GitHub مشارکت کنید. بازخورد و مشارکت شما همیشه خوش آمدید!
کد نویسی مبارک!