برنامه نویسی

OAuth2 در Microservices – انجمن DEV

Summarize this content to 400 words in Persian Lang
سلام برنامه نویسان در معماری میکروسرویس ها، مدیریت احراز هویت و مجوز می تواند پیچیده باشد. از آنجایی که چندین سرویس با یکدیگر و مشتریان خارجی در ارتباط هستند، داشتن مکانیزم ایمن و استاندارد برای مدیریت اعتبار و مجوزهای کاربر بسیار مهم است. اینجاست که OAuth2 می درخشد.

در این پست بررسی خواهیم کرد:

OAuth2 چیست؟

چگونه در محیط میکروسرویس کار می کند؟

پیاده سازی OAuth2 با مثال های کاربردی در دات نت.

OAuth2 چیست؟

OAuth2 یک چارچوب مجوز باز است که تفویض دسترسی ایمن را امکان پذیر می کند. به جای به اشتراک گذاری اعتبارنامه ها به طور مستقیم با برنامه های شخص ثالث، کاربران می توانند دسترسی محدودی به منابع خود اعطا کنند.

اجزای اصلی OAuth2:

صاحب منبع: کاربری که داده ها را در اختیار دارد.

مشتری: برنامه درخواست دسترسی به داده ها.

سرور منابع: سرور میزبان داده های کاربر (مثلاً یک API).

سرور مجوز: مسئول تایید کاربران و صدور توکن های دسترسی است.

چرا از OAuth2 در میکروسرویس ها استفاده کنیم؟

در معماری میکروسرویس، OAuth2 یک رویکرد یکپارچه و امن برای احراز هویت و مجوز ارائه می کند. مزایا عبارتند از:

احراز هویت متمرکز: OAuth2 اجازه می دهد تا احراز هویت توسط یک سرور مجوز اختصاصی مدیریت شود و افزونگی را کاهش می دهد.

مقیاس پذیری: هر میکروسرویس به طور مستقل توکن های دسترسی را تأیید می کند و مقیاس پذیری را تضمین می کند.

امنیت: توکن‌های دسترسی منقضی می‌شوند و می‌توان آنها را محدوده کرد و خطرات را به حداقل رساند.

تفکیک نگرانی ها: منطق احراز هویت از منطق تجاری جدا شده است.

جریان OAuth2 در میکروسرویس ها

در اینجا نحوه عملکرد OAuth2 معمولاً در معماری میکروسرویس ها آمده است:

احراز هویت کاربر:برنامه مشتری کاربر را برای احراز هویت به سرور مجوز می فرستد.
صدور توکن:پس از احراز هویت موفقیت آمیز، سرور مجوز صادر می کند نشانه دسترسی به مشتری.
اعتبار سنجی توکن:مشتری رمز دسترسی را برای دسترسی به سرور منبع (میکروسرویس ها) ارسال می کند.
دسترسی داده شد:سرور منبع رمز را تأیید می کند و دسترسی را اعطا یا رد می کند.

مثال پیاده سازی: OAuth2 در .NET Microservices

بیایید یک پیاده سازی OAuth2 ساده با استفاده از:

IdentityServer4 به عنوان سرور مجوز.

الف Resource API و الف درخواست مشتری.

1. راه اندازی سرور مجوز

IdentityServer4 را از طریق NuGet نصب کنید:

dotnet add package IdentityServer4

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سرور را در پیکربندی کنید Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityServer()
.AddInMemoryClients(new[] {
new Client
{
ClientId = “client-app”,
AllowedGrantTypes = GrantTypes.ClientCredentials,
ClientSecrets = { new Secret(“secret”.Sha256()) },
AllowedScopes = { “api1” }
}
})
.AddInMemoryApiScopes(new[] { new ApiScope(“api1”, “My API”) })
.AddDeveloperSigningCredential();
}

public void Configure(IApplicationBuilder app)
{
app.UseIdentityServer();
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سرور را اجرا کنید تا احراز هویت و صدور توکن انجام شود.

2. ایجاد Resource API

یک میکروسرویس جدید اضافه کنید تا به عنوان سرور منبع عمل کند. را نصب کنید Microsoft.AspNetCore.Authentication.JwtBearer بسته:

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی اعتبار نویسی در Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(“Bearer”)
.AddJwtBearer(“Bearer”, options =>
{
options.Authority = “http://localhost:5000”; // Authorization server
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = false
};
});

services.AddAuthorization();
services.AddControllers();
}

public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints => endpoints.MapControllers());
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک نقطه پایانی امن ایجاد کنید:

[ApiController] [Route(“api/resource”)] public class ResourceController : ControllerBase
{
[HttpGet] [Authorize] public IActionResult Get()
{
return Ok(“Protected resource accessed.”);
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. ساخت برنامه مشتری

را نصب کنید IdentityModel کتابخانه برای درخواست نشانه:

dotnet add package IdentityModel

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

درخواست یک توکن و دسترسی به منبع:

using IdentityModel.Client;
using System.Net.Http;

var client = new HttpClient();
var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
{
Address = “http://localhost:5000/connect/token”,
ClientId = “client-app”,
ClientSecret = “secret”,
Scope = “api1”
});

client.SetBearerToken(tokenResponse.AccessToken);
var response = await client.GetAsync(“http://localhost:5001/api/resource”);
Console.WriteLine(await response.Content.ReadAsStringAsync());

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مورد استفاده: OAuth2 در سیستم های منابع انسانی

یک سیستم منابع انسانی (HR) با ریزخدمات زیر را در نظر بگیرید:

خدمات کارکنان: اطلاعات کارمندان را ذخیره می کند.

خدمات حقوق و دستمزد: حقوق ها را مدیریت می کند.

خدمات مدیریت را ترک کنید: به درخواست های مرخصی رسیدگی می کند.

نحوه تناسب OAuth2 در:

را سرور مجوز برای کارکنان منابع انسانی توکن صادر می کند.

هر سرویس قبل از پردازش درخواست ها، توکن ها را تأیید می کند.

دامنه‌های دسترسی تضمین می‌کنند که کاربران فقط به داده‌هایی دسترسی دارند که مجاز هستند.

نتیجه گیری

OAuth2 یک چارچوب قوی است که احراز هویت و مجوز را در میکروسرویس ها ساده می کند. با متمرکز کردن صدور و اعتبارسنجی توکن، مقیاس پذیری، امنیت و سهولت نگهداری را تضمین می کند.

سلام برنامه نویسان
در معماری میکروسرویس ها، مدیریت احراز هویت و مجوز می تواند پیچیده باشد. از آنجایی که چندین سرویس با یکدیگر و مشتریان خارجی در ارتباط هستند، داشتن مکانیزم ایمن و استاندارد برای مدیریت اعتبار و مجوزهای کاربر بسیار مهم است. اینجاست که OAuth2 می درخشد.

در این پست بررسی خواهیم کرد:

  • OAuth2 چیست؟
  • چگونه در محیط میکروسرویس کار می کند؟
  • پیاده سازی OAuth2 با مثال های کاربردی در دات نت.

OAuth2 چیست؟

OAuth2 یک چارچوب مجوز باز است که تفویض دسترسی ایمن را امکان پذیر می کند. به جای به اشتراک گذاری اعتبارنامه ها به طور مستقیم با برنامه های شخص ثالث، کاربران می توانند دسترسی محدودی به منابع خود اعطا کنند.

اجزای اصلی OAuth2:

  • صاحب منبع: کاربری که داده ها را در اختیار دارد.
  • مشتری: برنامه درخواست دسترسی به داده ها.
  • سرور منابع: سرور میزبان داده های کاربر (مثلاً یک API).
  • سرور مجوز: مسئول تایید کاربران و صدور توکن های دسترسی است.

چرا از OAuth2 در میکروسرویس ها استفاده کنیم؟

در معماری میکروسرویس، OAuth2 یک رویکرد یکپارچه و امن برای احراز هویت و مجوز ارائه می کند. مزایا عبارتند از:

  1. احراز هویت متمرکز: OAuth2 اجازه می دهد تا احراز هویت توسط یک سرور مجوز اختصاصی مدیریت شود و افزونگی را کاهش می دهد.
  2. مقیاس پذیری: هر میکروسرویس به طور مستقل توکن های دسترسی را تأیید می کند و مقیاس پذیری را تضمین می کند.
  3. امنیت: توکن‌های دسترسی منقضی می‌شوند و می‌توان آنها را محدوده کرد و خطرات را به حداقل رساند.
  4. تفکیک نگرانی ها: منطق احراز هویت از منطق تجاری جدا شده است.

جریان OAuth2 در میکروسرویس ها

در اینجا نحوه عملکرد OAuth2 معمولاً در معماری میکروسرویس ها آمده است:

  1. احراز هویت کاربر:

    برنامه مشتری کاربر را برای احراز هویت به سرور مجوز می فرستد.

  2. صدور توکن:

    پس از احراز هویت موفقیت آمیز، سرور مجوز صادر می کند نشانه دسترسی به مشتری.

  3. اعتبار سنجی توکن:

    مشتری رمز دسترسی را برای دسترسی به سرور منبع (میکروسرویس ها) ارسال می کند.

  4. دسترسی داده شد:

    سرور منبع رمز را تأیید می کند و دسترسی را اعطا یا رد می کند.


مثال پیاده سازی: OAuth2 در .NET Microservices

بیایید یک پیاده سازی OAuth2 ساده با استفاده از:

  • IdentityServer4 به عنوان سرور مجوز.
  • الف Resource API و الف درخواست مشتری.

1. راه اندازی سرور مجوز

IdentityServer4 را از طریق NuGet نصب کنید:

dotnet add package IdentityServer4
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سرور را در پیکربندی کنید Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddIdentityServer()
        .AddInMemoryClients(new[]
        {
            new Client
            {
                ClientId = "client-app",
                AllowedGrantTypes = GrantTypes.ClientCredentials,
                ClientSecrets = { new Secret("secret".Sha256()) },
                AllowedScopes = { "api1" }
            }
        })
        .AddInMemoryApiScopes(new[] { new ApiScope("api1", "My API") })
        .AddDeveloperSigningCredential();
}

public void Configure(IApplicationBuilder app)
{
    app.UseIdentityServer();
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سرور را اجرا کنید تا احراز هویت و صدور توکن انجام شود.


2. ایجاد Resource API

یک میکروسرویس جدید اضافه کنید تا به عنوان سرور منبع عمل کند. را نصب کنید Microsoft.AspNetCore.Authentication.JwtBearer بسته:

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی اعتبار نویسی در Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication("Bearer")
        .AddJwtBearer("Bearer", options =>
        {
            options.Authority = "http://localhost:5000"; // Authorization server
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateAudience = false
            };
        });

    services.AddAuthorization();
    services.AddControllers();
}

public void Configure(IApplicationBuilder app)
{
    app.UseRouting();
    app.UseAuthentication();
    app.UseAuthorization();
    app.UseEndpoints(endpoints => endpoints.MapControllers());
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک نقطه پایانی امن ایجاد کنید:

[ApiController]
[Route("api/resource")]
public class ResourceController : ControllerBase
{
    [HttpGet]
    [Authorize]
    public IActionResult Get()
    {
        return Ok("Protected resource accessed.");
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


3. ساخت برنامه مشتری

را نصب کنید IdentityModel کتابخانه برای درخواست نشانه:

dotnet add package IdentityModel
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

درخواست یک توکن و دسترسی به منبع:

using IdentityModel.Client;
using System.Net.Http;

var client = new HttpClient();
var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
{
    Address = "http://localhost:5000/connect/token",
    ClientId = "client-app",
    ClientSecret = "secret",
    Scope = "api1"
});

client.SetBearerToken(tokenResponse.AccessToken);
var response = await client.GetAsync("http://localhost:5001/api/resource");
Console.WriteLine(await response.Content.ReadAsStringAsync());
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


مورد استفاده: OAuth2 در سیستم های منابع انسانی

یک سیستم منابع انسانی (HR) با ریزخدمات زیر را در نظر بگیرید:

  • خدمات کارکنان: اطلاعات کارمندان را ذخیره می کند.
  • خدمات حقوق و دستمزد: حقوق ها را مدیریت می کند.
  • خدمات مدیریت را ترک کنید: به درخواست های مرخصی رسیدگی می کند.

نحوه تناسب OAuth2 در:

  • را سرور مجوز برای کارکنان منابع انسانی توکن صادر می کند.
  • هر سرویس قبل از پردازش درخواست ها، توکن ها را تأیید می کند.
  • دامنه‌های دسترسی تضمین می‌کنند که کاربران فقط به داده‌هایی دسترسی دارند که مجاز هستند.

نتیجه گیری

OAuth2 یک چارچوب قوی است که احراز هویت و مجوز را در میکروسرویس ها ساده می کند. با متمرکز کردن صدور و اعتبارسنجی توکن، مقیاس پذیری، امنیت و سهولت نگهداری را تضمین می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا