Skoruba dla Identity Server – przegląd modułu autoryzacyjnego dla Aplikacji .NET

Skoruba for Identity Server - a review of authorization module for .NET Applications
Skoruba dla Identity Server - przegląd modułu autoryzacyjnego dla Aplikacji .NET

Skoruba for Identity Server - a review of authorization module for .NET Applications

 

Paragraph icon

.NET Core daje nam wiele możliwości w zakresie budowania rozwiązań biznesowych w sektorze logistycznym, finansowym czy bankowym. Do najważniejszych zalet tego środowiska należą wbudowane mechanizmy uwierzytelniania i autoryzacji użytkowników czy umożliwienie budowania obiegu zgłoszeń w oparciu o moduły zwane middleware. Moduły te można wymienić w taki sposób, żeby zmienić zachowanie naszej aplikacji.

.NET Core pozwala nam także chronić naszą aplikację przed atakami typu: XSS, SQL Injection, CSRF czy Open Redirect Attack. Ponadto możemy łatwo wymusić na aplikacji używanie HTTPS zamiast mniej bezpiecznego HTTP. Dzięki .NET Core programiści mogą realizować proces autoryzacji na wiele sposobów, m.in.: autoryzacja oparta na rolach, oparta na oświadczeniach czy oparta na zasadach.

Z powyższych powodów rozwiązania .NET Core są często wykorzystywane w dużych organizacjach korporacyjnych i przedsiębiorstwach. Ze względu na ogromną liczbę użytkowników i skomplikowane procesy biznesowe systemy te wymagają złożonych i solidnych mechanizmów ochrony kont użytkowników oraz zarządzania tożsamościami w naszych aplikacjach.

Dlatego w tym krótkim poście przeglądowym udostępnimy jedno z narzędzi, które wykorzystaliśmy do bezpiecznej autoryzacji, zbudowane dla jednego z naszych klientów korporacyjnych, a mianowicie oparty na .NET projekt Skoruba.IdentityServer4.Admin.

Separating icon

Czym jest Skoruba?

Paragraph icon

Skoruba to projekt typu open source zapewniający interfejs użytkownika, który umożliwia administrowanie funkcjami IdentityServer4 i ASP.NET Core Identity. Dzięki temu projektowi jesteśmy w pewien sposób zwolnieni z tworzenia wizualnej strony funkcjonalności związanej z zarządzaniem użytkownikami. Główną zaletą tego projektu jest przyjazny interfejs użytkownika, który opiera się na Bootstrap i pozwala nam w bardzo efektywny sposób zarządzać użytkownikami, hasłami, uwierzytelnianiem dwuskładnikowym, rolami, klientami, zasobami czy strukturą tokenów dostępu i ich roszczeniami.

Skoruba IdentityServer4

Źródło: https://github.com/skoruba/IdentityServer4.Admin

 

Dodatkowo Skoruba udostępnia również API, które możemy w dowolny sposób konsumować i na jego podstawie budować logikę związaną z zarządzaniem kontem w sposób, który będzie lepiej odpowiadał naszym wymaganiom biznesowym. Cała dokumentacja API jest dostępna dzięki Swagget, co pozwala nam testować poszczególne działania API.

Możliwość zmiany dostawcy bazy danych, w którym przechowujemy wszystkie informacje o tożsamości, jest również łatwiejsza i domyślnie mamy do wyboru takich dostawców, jak SQLServer, MySql i PostgreSQL.

Kolejną zaletą Skoruby jest bardzo dobrze rozwinięty mechanizm rejestrowania zdarzeń w naszej aplikacji oparty na bibliotece Serilog, co pozwala na bardzo sprawną identyfikację potencjalnych problemów występujących podczas działania aplikacji. Poniżej możesz zobaczyć wizualizację aplikacji Skoruby:

Skoruba visualisation

Źródło: https://github.com/skoruba/IdentityServer4.Admin

Separating icon

Jak Skoruba radzi sobie z rolami użytkowników? Przykład

Paragraph iconW tym przykładzie widzimy, jak wygląda sekcja interfejsu, w której można modyfikować role użytkowników:

Skoruba interfejs

 

Gdybyśmy nie korzystali ze Skoruby, musielibyśmy to wszystko stworzyć sami, łącznie z logiką i sposobem, jak to dobrze zaprezentować. Daje nam to wiele funkcji, których nie musimy tworzyć, przez co możemy skupiać się bardziej na naszych wymaganiach biznesowych, zamiast tworzyć zupełnie nowy interfejs użytkownika do obsługi usług IdentityServer4 i ASP.NET Core Identity. Przykładowa logika, która pokazuje nam, w jaki sposób Skoruba generuje role użytkowników, jak przedstawiono powyżej, jest pokazana w poniższym bloku kodu:

public virtual async Task BuildUserRolesViewModel(TKey id, int? page)
{s
    var roles = await GetRolesAsync();
    var userRoles = await GetUserRolesAsync(id.ToString(), page ?? 1);
    userRoles.UserId = id;
    userRoles.RolesList = roles.Select(x => new SelectItemDto(x.Id.ToString(), x.Name)).ToList();

    return userRoles;
}

public virtual async Task GetUserRolesAsync(string userId, int page = 1, int pageSize = 10)
{
    var userExists = await IdentityRepository.ExistsUserAsync(userId);
    if (!userExists) throw new UserFriendlyErrorPageException(string.Format(IdentityServiceResources.UserDoesNotExist().Description, userId), 
    IdentityServiceResources.UserDoesNotExist().Description);

    var userIdentityRoles = await IdentityRepository.GetUserRolesAsync(userId, page, pageSize);
    var roleDtos = Mapper.Map(userIdentityRoles);

    var user = await IdentityRepository.GetUserAsync(userId);
    roleDtos.UserName = user.UserName;

    await AuditEventLogger.LogEventAsync(new UserRolesRequestedEvent(roleDtos));

    return roleDtos;
}

Co więcej? Jeśli chcemy, możemy zmienić wygląd interfejsu. Możemy również modyfikować zawartość witryny, zmieniając logikę, która będzie adekwatna do naszych potrzeb biznesowych.

Jeśli potrzebujesz więcej informacji o projekcie Skoruba i jego możliwości, wejdź na stronę projektu na GitHub: https://github.com/skoruba/IdentityServer4.Admin 

Separating icon

Podsumowanie

Paragraph icon

W Inero Software zajmujemy się ambitnymi i wymagającymi projektami rozwoju oprogramowania. W tym wpisie na blogu pokazaliśmy, jak szybko można wykorzystać gotowe do użycia, istniejące rozwiązania open-source, aby zapewnić efektywny sposób wdrażania zabezpieczeń oprogramowania. Poza przedstawionym przypadkiem użycia, Skoruba i Identity Server mogą być wykorzystywane do pracy z urządzeniami mobilnymi, systemami IoT lub w ramach komunikacji M2M między maszynami lub robotami.

 

Inero Software oferuje wiedzę i doświadczenie w zakresie skutecznego wykorzystywania najnowocześniejszych technologii i danych do kształtowania korporacyjnych produktów cyfrowych przyszłości.

W sekcji BLOG można znaleźć inne artykuły dotyczące nowoczesnych rozwiązań dla przedsiębiorstw.