Przejdź do treści stopki
POMOC .NET

IdentityServer .NET (jak to działa dla programistów)

Bezpieczenstwo jest kluczowe we wspolczesnej architekturze oprogramowania, szczegolnie w odniesieniu do uprawnien uzytkownikow i uwierzytelniania. Jako wiodacy framework do implementacji OpenID Connect i OAuth 2.0, IdentityServer4 oferuje niezawodne rozwiazanie dla scentralizowanej autoryzacji i uwierzytelniania w rozproszonych sieciach. Gdy deweloperzy uzywaja IronPDF, potężnej biblioteki C# do generowania PDF, wraz z bezpiecznym zarzadzaniem tozsamoscia, moga latwo laczyc oba elementy, aby tworzyc dokumenty PDF, ktore spelniaja rozne wymagania aplikacji.

IdentityServer4 zapewnia modularne, oparte na standardach rozwiazanie, ktore upraszcza instalacje zarzadzania tozsamoscia. Pomaga deweloperom stworzyc scentralizowany dostawca tozsamosci, ktory obsluguje uwierzytelnianie uzytkownikow, dostep, walidacje i wydawanie tokenow oraz walidacje uprawnien dla roznych serwisow i aplikacji. IdentityServer4 umozliwia deweloperom tworzenie bezpiecznych i intuicyjnych doswiadczen uwierzytelniania, wspierajac wiele metod uwierzytelniania, takich jak nazwa uzytkownika/haslo, logowanie spolecznosciowe i uwierzytelnianie wieloskładnikowe.

Ten tutorial obejmie integracje C# IdentityServer4 z IronPDF, pokazujac jak uzywac IdentityServer4 do tworzenia bezpiecznych procesow autoryzacji i uwierzytelniania oraz jak korzystac z utworzonych tozsamosci uzytkownikow do personalizowania tworzenia dokumentow PDF w IronPDF. Omowimy, jak poprawic bezpieczenstwo i funkcjonalnosc aplikacji C#, od konfigurowania IdentityServer4 jako scentralizowanego dostawcy tozsamosci i uwierzytelniania po integracje IronPDF do dynamicznej produkcji PDF.

Czym jest IdentityServer4 C#?

Popularny framework open-source nazwany IdentityServer4 jest uzywany w aplikacjach .NET i C# do zarzadzania tozsamoscia, autoryzacji i uwierzytelniania. Jest to elastyczne rozwiazanie do zabezpieczania aplikacji webowych, API i mikrousług, poniewaz zgodne jest ze wspolczesnymi protokolami bezpieczenstwa jak OpenID Connect i OAuth 2.0.

IdentityServer4 dziala zasadniczo jako scentralizowany serwer uwierzytelniania, zajmujac sie identyfikacja i zarzadzaniem uprawnieniami uzytkownikow, wydawaniem waznych tokenow dostepu oraz walidacja poświadczeń. Daje programistom mozliwosc integracji federacyjnego uwierzytelniania i jednokrotnego logowania (SSO) w kilku aplikacjach i uslugach, co skutkuje bezpiecznym i płynnym doświadczeniem końcowego użytkownika.

IdentityServer .NET (Jak to działa dla programistów): Rysunek 1 - IdentityServer4: Użycie ASP.NET Core Identity

Funkcje IdentityServer4

SSO, czyli jednokrotne logowanie

Bez ponownego wprowadzania poświadczeń, użytkownicy mogą uzyskiwać dostęp do różnych aplikacji lub usług z jednym uwierzytelnieniem.

Wsparcie dla OpenID Connect i OAuth 2.0

IdentityServer4 oferuje protokoły standardowe w branży dla bezpiecznego uwierzytelniania i autoryzacji, zapewniając kompatybilność z szerokim zakresem aplikacji klienckich i platform.

Elastyczna konfiguracja

Deweloperzy mogą dostosować ustawienia bezpieczeństwa do specyficznych wymagań aplikacji, mając szczegółową kontrolę nad tym, jak konfigurowane są polityki uwierzytelniania i uprawnień.

Łączność z ASP.NET Core

Uwierzytelnianie dla aplikacji webowych ASP.NET Core i API jest łatwe do wdrożenia dzięki płynnej integracji IdentityServer4 z frameworkiem.

Personalizacja i Adaptacja

Dzięki wysokiemu stopniowi rozszerzalności i personalizacji frameworku, programiści mogą dodać nowe przechowywania użytkowników, dostawców tożsamości, użytkowników testowych oraz przepływy uwierzytelniania w razie potrzeby.

Weryfikacja użytkownika

IdentityServer4 daje deweloperom elastyczność wyboru konfiguracji mechanizmu uwierzytelniania, która najlepiej pasuje do wymagań ich aplikacji internetowej. Te mechanizmy obejmują nazwę użytkownika/hasło, loginy społecznościowe (jak Google, Facebook itp.) oraz zewnętrznych dostawców tożsamości (jak Active Directory, Azure AD itp.).

Polityki autoryzacji

Deweloperzy mogą tworzyć szczegółowe polityki autoryzacji opierające się na rolach użytkownika, roszczeniach lub innych kryteriach, aby zapewnić, że jedynie uprawnieni użytkownicy mogą uzyskać dostęp do określonych zasobów lub wykonać konkretne akcje w aplikacji.

Zarządzanie tokenami

IdentityServer4 zarządza tokenami dostępu, tokenami odświeżania oraz tokenami tożsamości, oferując bezpieczny sposób uwierzytelniania użytkowników oraz uzyskiwania dostępu do zasobów chronionych przez identyfikacyjny serwer.

Utwórz i Konfiguruj

Aby skonfigurować IdentityServer4 w projekcie C# w Visual Studio, wykonaj te kroki:

Tworzenie nowego projektu w Visual Studio

Po uruchomieniu aplikacji Visual Studio, wybierz opcję "Utwórz nowy projekt" lub wybierz z menu Plik > Dodaj > "Nowy projekt". Następnie wybierz "Asp.NET Core Web App (Model-View-Controller)" po wyborze "nowego projektu". Ta aplikacja zostanie użyta do generowania dokumentów PDF w tym samouczku.

 related to Tworzenie nowego projektu w Visual Studio Opcję Nowy projekt. Następnie wybierz ASP.NET Core Web App" />

Wybierz ścieżkę pliku i wprowadź nazwę projektu w odpowiednich polach tekstowych. Następnie wybierz wymaganą .NET Framework, klikając przycisk Utwórz, jak pokazano na zrzucie ekranu poniżej.

IdentityServer .NET (Jak działa dla programistów): Rysunek 3 - Następnie skonfiguruj projekt, określając nazwę i lokalizację projektu. Kliknij na Dalej.

Zdecyduj, która framework jest potrzebna i kliknij przycisk Utwórz.

IdentityServer .NET (Jak działa dla programistów): Rysunek 4 - Określ dodatkowe informacje, jak Framework, Typ uwierzytelnienia, wybierz, czy chcesz skonfigurować dla HTTPS oraz aktywować Docker. Następnie kliknij na Utwórz.

Struktura dla wybranej aplikacji zostanie wygenerowana przez projekt Visual Studio. Używamy ASP.NET MVC w tym przykładzie. Aby napisać kod, możemy albo utworzyć nowy kontroler, albo wykorzystać istniejący do wprowadzania kodu i budowania/uruchamiania programu.

IdentityServer .NET (Jak działa dla programistów): Rysunek 5 - Projekt ASP.NET Core Web App (MVC) został pomyślnie utworzony.

Aby przetestować kod, dodaj niezbędną bibliotekę.

Zainstaluj pakiet IdentityServer4

Używając .NET CLI lub Menedżera Pakietów NuGet w Visual Studio, dodaj pakiet IdentityServer4 do swojego projektu. Używając konsoli menedżera pakietów lub terminala, wpisz następujące polecenie, aby zainstalować najnowszą wersję pakietu:

Install-Package IdentityServer4

Konfiguruj IdentityServer4 w projekcie .NET Core

W swojej aplikacji ASP.NET Core skonfiguruj IdentityServer4, dodając wymagane oprogramowanie pośrednie i usługi do pliku Startup.cs. Oto przykład wprowadzający kod konfigurowania IdentityServer4:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddIdentityServer()
            .AddInMemoryClients(Config.Clients)
            .AddInMemoryIdentityResources(Config.IdentityResources)
            .AddInMemoryApiScopes(Config.ApiScopes)
            .AddInMemoryApiResources(Config.ApiResources)
            .AddTestUsers(Config.Users);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseIdentityServer();
    }
}
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddIdentityServer()
            .AddInMemoryClients(Config.Clients)
            .AddInMemoryIdentityResources(Config.IdentityResources)
            .AddInMemoryApiScopes(Config.ApiScopes)
            .AddInMemoryApiResources(Config.ApiResources)
            .AddTestUsers(Config.Users);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseIdentityServer();
    }
}
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.Hosting

Public Class Startup
	Public Sub ConfigureServices(ByVal services As IServiceCollection)
		services.AddIdentityServer().AddInMemoryClients(Config.Clients).AddInMemoryIdentityResources(Config.IdentityResources).AddInMemoryApiScopes(Config.ApiScopes).AddInMemoryApiResources(Config.ApiResources).AddTestUsers(Config.Users)
	End Sub

	Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
		If env.IsDevelopment() Then
			app.UseDeveloperExceptionPage()
		End If
		app.UseIdentityServer()
	End Sub
End Class
$vbLabelText   $csharpLabel

Konfiguruj Klientów, Zasoby Tożsamości i Zasoby API

Konfiguracja klientów, zasobów tożsamości (zakresów) i zasobów API dla IdentityServer4 jest konieczna. Te konfiguracje mogą być zdefiniowane w osobnej klasie, jak Config.cs:

public class Config
{
    public static IEnumerable<Client> Clients { get; set; }
    public static IEnumerable<IdentityResource> IdentityResources { get; set; }
    public static IEnumerable<ApiScope> ApiScopes { get; set; }
    public static IEnumerable<ApiResource> ApiResources { get; set; }
    public static List<TestUser> Users { get; set; }
}
public class Config
{
    public static IEnumerable<Client> Clients { get; set; }
    public static IEnumerable<IdentityResource> IdentityResources { get; set; }
    public static IEnumerable<ApiScope> ApiScopes { get; set; }
    public static IEnumerable<ApiResource> ApiResources { get; set; }
    public static List<TestUser> Users { get; set; }
}
Public Class Config
    Public Shared Property Clients As IEnumerable(Of Client)
    Public Shared Property IdentityResources As IEnumerable(Of IdentityResource)
    Public Shared Property ApiScopes As IEnumerable(Of ApiScope)
    Public Shared Property ApiResources As IEnumerable(Of ApiResource)
    Public Shared Property Users As List(Of TestUser)
End Class
$vbLabelText   $csharpLabel

Postępujące zgodnie z tymi instrukcjami, możesz włączyć bezpieczne uwierzytelnianie i autoryzację w aplikacjach ASP.NET Core, tworząc i konfigurując IdentityServer4 w projekcie C#.

Zaczynaj z IdentityServer4 z IronPDF

Te instrukcje poprowadzą cię przez konfigurowanie IdentityServer4 dla bezpiecznego uwierzytelniania i autoryzacji oraz używania IronPDF do tworzenia dokumentów PDF w projekcie C#. Dowiesz się, jak utworzyć projekt bazujący na podstawowej konfiguracji, wykonując te kroki.

Czym jest IronPDF?

IronPDF to biblioteka bogata w funkcje do współdziałania z dokumentami PDF w aplikacjach .NET. Dzięki swojemu wszechstronnemu zestawowi funkcji, użytkownicy mogą tworzyć PDFy od podstaw lub z zawartości HTML, a także dodawać, usuwać lub przestawiać sekcje istniejących dokumentów PDF. IronPDF dostarcza programistom solidne API do tworzenia, modyfikowania i przekształcania plików PDF, uproszczając obsługę PDF w aplikacjach .NET.

IdentityServer .NET (Jak to działa dla programistów): Figura 6 - IronPDF dla .NET: Biblioteka PDF C#

Najważniejsze cechy IronPDF

Konwersja HTML na PDF

Z IronPDF, możesz tworzyć wysokiej jakości dokumenty PDF, używając zawartości HTML, w tym JavaScript i CSS. Ta funkcjonalność jest przydatna przy tworzeniu PDFów z witryn internetowych lub dynamicznej zawartości.

Modyfikacja i rozszerzanie PDFów

IronPDF pozwala zmieniać dokumenty PDF, które już istnieją. Możesz łączyć wiele PDFów w jeden dokument, wyciągać strony z PDFa i dodawać tekst, obrazy, znaki wodne lub adnotacje.

Tworzenie PDF na bieżąco

Z API IronPDF, możesz programowo dodawać tekst, obrazy, kształty i inne obiekty do nowo utworzonych dokumentów PDF. To umożliwia dynamiczne tworzenie PDFów dla faktur, raportów i innych wyjść opartych na dokumentach.

Zabezpieczenia plików PDF

Możesz zarządzać dostępem i chronić dane poufne, szyfrując dokumenty PDF z IronPDF oraz dodając ochronę hasłem.

Formularze PDF

IronPDF umożliwia użytkownikom tworzenie, wypełnianie i przesyłanie formularzy PDF, a także wstawianie danych do pól formularzy.

Wyodrębnianie tekstu

IronPDF wspomaga manipulacje danymi tekstowymi, analize i wyszukiwanie, wyciągając informacje tekstowe z dokumentów PDF.

Konwersja do formatów graficznych

IronPDF może przekształcić dokumenty PDF do popularnych formatów obrazów, takich jak PNG, JPEG i BMP, co jest przydatne, gdy potrzebne są obrazy zamiast PDFów.

Zainstaluj IronPDF

Używaj .NET CLI lub Menedżera Pakietów NuGet, aby dodać najnowszą wersję IronPDF do swojego projektu.

Install-Package IronPdf

Integrate IronPDF With IdentityServer4 C

Skonfiguruj wymagane usługi i oprogramowanie pośrednie dla IdentityServer4 w pliku Startup.cs, jak pokazano w powyższym kodzie. Następnie utwórz nowy kontroler MVC nazwany PdfController.cs, aby obsługiwać generowanie PDFów za pomocą IronPDF.

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.Threading.Tasks;

[Authorize]
public class PdfController : Controller
{
    public async Task<IActionResult> GeneratePdf()
    {
        // Create IronPDF Renderer
        var renderer = new IronPdf.ChromePdfRenderer();

        // HTML content to be converted to PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a generated PDF document.</p>";

        // Convert HTML to PDF asynchronously
        var pdfDocument = await Task.Run(() => renderer.RenderHtmlAsPdf(htmlContent));

        // Return the PDF as a file
        return File(pdfDocument.BinaryData, "application/pdf", "example.pdf");
    }
}
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.Threading.Tasks;

[Authorize]
public class PdfController : Controller
{
    public async Task<IActionResult> GeneratePdf()
    {
        // Create IronPDF Renderer
        var renderer = new IronPdf.ChromePdfRenderer();

        // HTML content to be converted to PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a generated PDF document.</p>";

        // Convert HTML to PDF asynchronously
        var pdfDocument = await Task.Run(() => renderer.RenderHtmlAsPdf(htmlContent));

        // Return the PDF as a file
        return File(pdfDocument.BinaryData, "application/pdf", "example.pdf");
    }
}
Imports Microsoft.AspNetCore.Authorization
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf
Imports System.Threading.Tasks

<Authorize>
Public Class PdfController
	Inherits Controller

	Public Async Function GeneratePdf() As Task(Of IActionResult)
		' Create IronPDF Renderer
		Dim renderer = New IronPdf.ChromePdfRenderer()

		' HTML content to be converted to PDF
		Dim htmlContent As String = "<h1>Hello, IronPDF!</h1><p>This is a generated PDF document.</p>"

		' Convert HTML to PDF asynchronously
		Dim pdfDocument = Await Task.Run(Function() renderer.RenderHtmlAsPdf(htmlContent))

		' Return the PDF as a file
		Return File(pdfDocument.BinaryData, "application/pdf", "example.pdf")
	End Function
End Class
$vbLabelText   $csharpLabel

Integracja IronPDF z IdentityServer4 obejmuje najpierw konfigurowanie bezpiecznego uwierzytelniania i autoryzacji użytkownika za pomocą IdentityServer4, a następnie używanie IronPDF do tworzenia dokumentów PDF, które są dostępne jedynie dla uwierzytelnionych użytkowników. W dostarczonym przykładzie kodu, IdentityServer4 jest skonfigurowane w pliku Startup.cs, aby obsługiwać zarządzanie tożsamością użytkownika za pomocą konfiguracji w pamięci i poświadczeń klienta.

Kontroler PdfController jest chroniony atrybutem [Authorize], zapewniając, że jedynie uprawnieni użytkownicy mają dostęp do jego operacji. Ten kontroler używa metody asynchronicznej do renderowania zawartości HTML w format PDF przy użyciu biblioteki IronPDF. Proces generowania PDFów obejmuje tworzenie renderera ChromePdfRenderer, przekształcanie zawartości HTML w dokument PDF i zwracanie PDFu jako odpowiedzi plikowej.

Poprzez osadzenie logiki generowania PDFów w zabezpieczonym punkcie końcowym, jedynie użytkownicy uwierzytelniani przez IdentityServer4 mogą inicjować generowanie PDFów, co w konsekwencji łączy silne bezpieczeństwo z dynamicznymi możliwościami tworzenia dokumentów. Ta konfiguracja jest szczególnie korzystna dla aplikacji wymagających bezpiecznej obsługi dokumentów, takich jak generowanie faktur, raportów lub spersonalizowanej treści na podstawie informacji specyficznych dla użytkownika, podczas gdy surowe kontrole dostępu są egzekwowane poprzez IdentityServer4.

IdentityServer .NET (Jak to działa dla programistów): Figura 7 - Wygenerowany PDF przy użyciu IronPDF z bezpiecznym uwierzytelnianiem i autoryzacją użytkownika zapewnianą przez IdentityServer4.

Wnioski

Podsumowując, integracja IdentityServer4 z IronPDF w projekcie C# efektywnie łączy solidne bezpieczeństwo z dynamicznymi możliwościami generowania PDF. IdentityServer4 oferuje zjednoczone i zgodne ze standardami podejście do zarządzania tożsamościami użytkowników i kontrolowaniem dostępu w różnych aplikacjach i usługach, zapewniając bezpieczeństwo uwierzytelniania i autoryzacji użytkowników. Używając IronPDF, deweloperzy mogą tworzyć wysokiej jakości dokumenty PDF, które są dostępne tylko dla uwierzytelnianych użytkowników, bazując na zweryfikowanych danych użytkownika.

Ta integracja poprawia bezpieczeństwo aplikacji i funkcjonalność, czyniąc ją idealną dla scenariuszy, takich jak generowanie faktur, raportów i spersonalizowanej treści wymagającej bezpiecznego przetwarzania dokumentów. Ogólnie rzecz biorąc, połączenie IdentityServer4 i IronPDF dostarcza przekonującego rozwiązania do tworzenia bezpiecznych, wydajnych i zorientowanych na użytkownika aplikacji w ramach środowiska .NET.

Gdy technologie IronPDF i Iron Software są zintegrowane z twoim stosikiem rozwoju aplikacji dla przedsiębiorstwa, IronPDF może zapewnić bogatą w funkcje dokumentację dla deweloperów oraz terminowe rozwiązania programowe dla klientów i końcowych użytkowników. Ta solidna podstawa ułatwi także poprawę projektów, systemów zaplecza oraz procesów.

Iron Suite, kombinacja 9 różnych produktów API .NET, jest dostępna w konkurencyjnej cenie licencyjnej! Te technologie są doskonałym wyborem dla nowoczesnych projektów rozwoju oprogramowania dzięki ich wszechstronnej dokumentacji, aktywnej społeczności deweloperów online i regularnym aktualizacjom.

Często Zadawane Pytania

Jak można wykorzystać IronPDF do konwersji HTML na PDF w aplikacji .NET?

IronPDF udostępnia metody, takie jak RenderHtmlAsPdf, które pozwalają programistom konwertować ciągi HTML na dokumenty PDF w ramach aplikacji .NET. Obsługuje również konwersję całych plików HTML lub adresów URL do formatu PDF, co czyni go wszechstronnym narzędziem do konwersji dokumentów.

Jaką rolę odgrywa IdentityServer4 w zabezpieczaniu aplikacji .NET?

IdentityServer4 odgrywa kluczową rolę w zabezpieczaniu aplikacji .NET, zapewniając scentralizowane usługi uwierzytelniania i autoryzacji. Umożliwia programistom wdrażanie protokołów takich jak OpenID Connect i OAuth 2.0, co pozwala na bezpieczne zarządzanie użytkownikami i ochronę zasobów.

Czy można zintegrować generowanie plików PDF z bezpiecznym uwierzytelnianiem w aplikacji napisanej w języku C#?

Tak, możliwe jest zintegrowanie generowania plików PDF z bezpiecznym uwierzytelnianiem w aplikacji napisanej w języku C#. Korzystając z IdentityServer4 do bezpiecznego uwierzytelniania oraz IronPDF do generowania plików PDF, programiści mogą zapewnić, że dostęp do poufnych dokumentów mają wyłącznie uwierzytelnieni użytkownicy, co zwiększa bezpieczeństwo i zgodność z przepisami.

Jakie kroki należy wykonać, aby skonfigurować IdentityServer4 w projekcie .NET?

Aby skonfigurować IdentityServer4 w projekcie .NET, programiści muszą zainstalować pakiet IdentityServer4 za pośrednictwem NuGet, skonfigurować go w pliku Startup.cs oraz skonfigurować klientów do uwierzytelniania. Zapewnia to, że aplikacja może bezpiecznie zarządzać tożsamościami użytkowników i uprawnieniami.

W jaki sposób IronPDF zwiększa bezpieczeństwo dokumentów w aplikacjach .NET?

IronPDF zwiększa bezpieczeństwo dokumentów, umożliwiając programistom dodawanie do plików PDF funkcji takich jak szyfrowanie i ochrona hasłem. Dzięki temu poufne informacje zawarte w plikach PDF są dostępne wyłącznie dla uprawnionych użytkowników, co jest zgodne z najlepszymi praktykami w zakresie ochrony danych.

Jakie są typowe metody uwierzytelniania obsługiwane przez IdentityServer4?

IdentityServer4 obsługuje popularne metody uwierzytelniania, takie jak nazwa użytkownika/hasło, logowanie przez serwisy społecznościowe oraz uwierzytelnianie wieloskładnikowe. Ta elastyczność pozwala programistom tworzyć bezpieczne i przyjazne dla użytkownika procesy uwierzytelniania dostosowane do potrzeb ich aplikacji.

Jak zarządzać tokenami za pomocą IdentityServer4?

IdentityServer4 pozwala programistom efektywnie zarządzać tokenami dzięki obsłudze OAuth 2.0. Zapewnia funkcje wydawania, weryfikacji i unieważniania tokenów, które są niezbędne do kontrolowania dostępu do zasobów aplikacji w oparciu o status uwierzytelnienia użytkownika.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie