OpenID Connect kullanarak Microsoft Entra ID ile Quarkus uygulamalarının güvenliğini sağlama

Bu makalede, OpenID Connect (OIDC) kullanarak Microsoft Entra ID ile Red Hat Quarkus uygulamalarının güvenliğini nasıl sağlayabileceğiniz gösterilmektedir.

Bu makalede şunları öğreneceksiniz:

  • Microsoft Entra ID ile bir OpenID Connect sağlayıcısı ayarlayın.
  • OpenID Connect kullanarak quarkus uygulamasını koruma.
  • Quarkus uygulamasını çalıştırın ve test edin.

Önkoşullar

Microsoft Entra Id ile OpenID Connect sağlayıcısı ayarlama

Bu bölümde, Quarkus uygulamanızla kullanmak üzere Microsoft Entra Id ile bir OpenID Connect sağlayıcısı ayarlarsınız. Sonraki bir bölümde, Microsoft Entra kiracınızdaki kullanıcıların kimliğini doğrulamak ve yetkilendirmek için OpenID Connect kullanarak Quarkus uygulamasını yapılandıracaksınız.

Microsoft Entra kiracısında kullanıcı oluşturma

İlk olarak, Kullanıcıları oluşturma, davet etme ve silme adımlarını izleyerek Microsoft Entra kiracınızda iki kullanıcı oluşturun. Yalnızca Yeni kullanıcı oluştur bölümüne ihtiyacınız vardır. Makalenin üzerinden geçerken aşağıdaki yönergeleri kullanın, ardından Microsoft Entra kiracınızda kullanıcı oluşturduktan sonra bu makaleye dönün.

Uygulamada "yönetici" görevi görecek bir kullanıcı oluşturmak için aşağıdaki adımları kullanın:

  1. Yeni kullanıcı oluştur bölümündeki Temel Bilgiler sekmesine ulaştığınızda aşağıdaki adımları kullanın:
    1. Kullanıcı asıl adı olarak admin girin. Daha sonra uygulamada oturum açtığınızda kullanabilmek için değeri kaydedin.

    2. Posta takma adı için Kullanıcı asıl adından türet'i seçin

    3. Görünen ad için Yönetici girin.

    4. Parola için Parolayı otomatik olarak oluştur'a tıklayın. Daha sonra uygulamada oturum açtığınızda kullanmak üzere Parola değerini kopyalayın ve kaydedin.

    5. Hesap etkin'i seçin.

      Yönetici kullanıcı için Yeni kullanıcı oluştur Temel Bilgileri bölmesini gösteren Azure portalının ekran görüntüsü.

    6. Gözden geçir ve oluştur>Oluştur'u seçin. Kullanıcı oluşturulana kadar bekleyin.

    7. Bir dakika kadar bekleyin ve Yenile'yi seçin. Listede yeni kullanıcıyı görmeniz gerekir.

Uygulamada "kullanıcı" görevi görecek bir kullanıcı oluşturmak için şu adımları yineleyin, ancak aşağıdaki değerleri kullanın:

  • Kullanıcı asıl adı için user girin.
  • Görünen ad için Kullanıcı girin.

Normal bir kullanıcı için Yeni kullanıcı oluştur Temel Bilgileri bölmesini gösteren Azure portalının ekran görüntüsü.

Microsoft Entra Id'de uygulama kaydetme

Ardından, Hızlı Başlangıç: Uygulamayı Microsoft kimlik platformu ile kaydetme adımlarını izleyerek bir uygulamayı kaydedin. Makalede ilerlerken aşağıdaki yönergeleri kullanın, ardından uygulamayı kaydettikten ve yapılandırdıktan sonra bu makaleye dönün.

  1. Uygulama kaydetme bölümüne ulaştığınızda aşağıdaki adımları kullanın:
    1. Desteklenen hesap türleri için Yalnızca bu kuruluş dizinindeki hesaplar (Yalnızca varsayılan dizin - Tek kiracı) seçeneğini belirleyin.
    2. Kayıt tamamlandığında, uygulama yapılandırmasında daha sonra kullanmak üzere Uygulama (istemci) Kimliği ve Dizin (kiracı) Kimliği değerlerini kaydedin.
  2. Yeniden yönlendirme URI'sini ekle bölümüne ulaştığınızda, şu an için adımları atlayın. Daha sonra bu makalede örnek uygulamayı çalıştırıp test ettiğinizde yeniden yönlendirme URI'sini eklersiniz.
  3. Kimlik bilgileri ekle bölümüne ulaştığınızda, İstemci gizli dizisi ekle sekmesini seçin.
  4. bir istemci gizli dizisi eklediğinizde, uygulama yapılandırmasının ilerleyen bölümlerinde kullanmak üzere İstemci gizli dizisi değerini yazın.

Uygulamanıza uygulama rolleri ekleme

Ardından, Uygulamanıza uygulama rolleri ekleme ve bunları belirteçte alma bölümünde yer alan adımları izleyerek uygulamanıza uygulama rolleri ekleyin. Yalnızca Bir uygulama için rolleri bildirme ve Microsoft Entra rollerine kullanıcı ve grup atama bölümlerine ihtiyacınız vardır. Makalede ilerlerken aşağıdaki yönergeleri kullanın, ardından uygulama rollerini bildirdikten sonra bu makaleye dönün.

  1. Bir uygulama için rolleri bildirme bölümüne ulaştığınızda, yönetici ve normal kullanıcı için roller oluşturmak için Uygulama rolleri kullanıcı arabirimini kullanın.

    1. Aşağıdaki değerleri kullanarak yönetici kullanıcı rolü oluşturun:

      • Görünen ad için Yönetici girin.
      • İzin verilen üye türleri için Kullanıcılar/Gruplar'ı seçin.
      • Değer alanına admin girin.
      • Açıklama alanına Yönetici yazın.
      • Bu uygulama rolünü etkinleştirmek istiyor musunuz? öğesini seçin.

      Yönetici kullanıcı için uygulama rolü oluştur bölmesini gösteren Azure portalının ekran görüntüsü.

    2. Uygula’yı seçin. Rol oluşturulana kadar bekleyin.

    3. Aynı adımları kullanarak ancak aşağıdaki değerlerle normal bir kullanıcı rolü oluşturun:

      • Görünen ad için Kullanıcı girin.
      • Değer alanına kullanıcı girin.
      • Açıklama alanına Kullanıcı girin.

      Normal kullanıcı için uygulama rolü oluştur bölmesini gösteren Azure portalının ekran görüntüsü.

  2. Kullanıcıları ve grupları Microsoft Entra rollerine atama bölümüne ulaştığınızda aşağıdaki adımları kullanın:

    1. Kullanıcı/grup ekle'yi seçin.

    2. Atama Ekle bölmesinde, Kullanıcılar için kullanıcı Yöneticisi'ni seçin ve Rol seçin için Rol Yöneticisi'ni seçin. Ardından Ata'yı seçin. Uygulama ataması başarılı olana kadar bekleyin. Rol atanan sütununu görmek için tabloyu yan kaydırmanız gerekebilir.

    3. Kullanıcı rolünü kullanıcıya atamak için önceki adımları yineleyin.

    4. Yenile'yi seçtiğinizde Kullanıcılar ve gruplar bölmesinde atanan kullanıcıları ve rolleri görmeniz gerekir.

      Atanan kullanıcıları ve rolleri gösteren Azure portalının ekran görüntüsü.

      Görünümünüzün resim gibi görünmesi için sütun üst bilgilerinin genişliğini ayarlamanız gerekebilir.

Uygulamanıza uygulama rolleri ekleme ve bunları belirteçte alma konusunda başka hiçbir adımı izlemeyin.

OpenID Connect kullanarak Quarkus uygulamasını koruma

Bu bölümde, OpenID Connect kullanarak Microsoft Entra kiracınızdaki kullanıcıların kimliğini doğrulayan ve kullanıcıları yetkilendirilen bir Quarkus uygulamasının güvenliğini sağlarsınız. Ayrıca rol tabanlı erişim denetimi (RBAC) kullanarak kullanıcılara uygulamanın belirli bölümlerine erişim vermeyi de öğrenirsiniz.

Bu hızlı başlangıç için örnek Quarkus uygulaması, quarkus-azure deposundaki GitHub'dadır ve entra-id-quarkus dizininde bulunur.

Uygulamanın güvenliğini sağlamak için kimlik doğrulamasını ve yetkilendirmeyi etkinleştirme

Uygulamanın WelcomePage.java'de tanımlanan ve aşağıdaki örnek kodda gösterilen bir karşılama sayfası kaynağı vardır. Bu sayfa kimliği doğrulanmamış kullanıcılar tarafından erişilebilir. Hoş geldiniz sayfasının kök yolu konumundadır /.

@Path("/")
public class WelcomePage {

    private final Template welcome;

    public WelcomePage(Template welcome) {
        this.welcome = requireNonNull(welcome, "welcome page is required");
    }

    @GET
    @Produces(MediaType.TEXT_HTML)
    public TemplateInstance get() {
        return welcome.instance();
    }

}

Hoş geldiniz sayfasından kullanıcılar profil sayfasına erişmek için uygulamada oturum açabilir. Hoş geldiniz sayfasında kullanıcı veya yönetici olarak oturum açmak için bağlantılar bulunur. Bağlantılar sırasıyla ve /profile/userkonumundadır/profile/admin. Hoş geldiniz sayfası kullanıcı arabirimi welcome.qute.html tanımlanır ve aşağıdaki örnekte gösterilmiştir:

<html>
    <head>
        <meta charset="UTF-8">
        <title>Greeting</title>
    </head>
    <body>
        <h1>Hello, welcome to Quarkus and Microsoft Entra ID integration!</h1>
        <h1>
            <a href="/profile/user">Sign in as user</a>
        </h1>
        <h1>
            <a href="/profile/admin">Sign in as admin</a>
        </h1>
    </body>
</html>

Hem hem /profile/user de /profile/admin bağlantılar, aşağıdaki örnek kodda gösterildiği gibi ProfilePage.java tanımlanan profil sayfası kaynağına işaret ediyor. Bu sayfaya yalnızca paketin @RolesAllowed("**")jakarta.annotation.security.RolesAllowed ek açıklaması kullanılarak kimliği doğrulanmış kullanıcılar erişebilir. Ek @RolesAllowed("**") açıklama, yalnızca kimliği doğrulanmış kullanıcıların yola erişebileceğini /profile belirtir.

@Path("/profile")
@RolesAllowed("**")
public class ProfilePage {

    private final Template profile;

    @Inject
    SecurityIdentity identity;

    @Inject
    JsonWebToken accessToken;

    public ProfilePage(Template profile) {
        this.profile = requireNonNull(profile, "profile page is required");
    }

    @Path("/admin")
    @GET
    @Produces(MediaType.TEXT_HTML)
    @RolesAllowed("admin")
    public TemplateInstance getAdmin() {
        return getProfile();
    }

    @Path("/user")
    @GET
    @Produces(MediaType.TEXT_HTML)
    @RolesAllowed({"user","admin"})
    public TemplateInstance getUser() {
        return getProfile();
    }

    private TemplateInstance getProfile() {
        return profile
                .data("name", identity.getPrincipal().getName())
                .data("roles", identity.getRoles())
                .data("scopes", accessToken.getClaim("scp"));
    }

}

Profil sayfası kaynağı, ek açıklamayı kullanarak RBAC'yi @RolesAllowed etkinleştirir. Ek açıklama bağımsız @RolesAllowed değişkenleri yalnızca rolü olan admin kullanıcıların yola, /profile/admin veya user rolüne admin sahip kullanıcıların da yola erişebileceğini /profile/user belirtir.

/profile/admin Hem hem de /profile/user uç noktaları profil sayfasını döndürür. Profil sayfası kullanıcı arabirimi, aşağıdaki örnekte gösterildiği gibi profile.qute.html içinde tanımlanır. Bu sayfada kullanıcının adı, rolleri ve kapsamları görüntülenir. Profil sayfasında, oturumu kapatmak için kullanıcıyı OIDC sağlayıcısına yönlendiren bir oturum kapatma bağlantısı /logoutda bulunur. Profil sayfası Qute şablon oluşturma altyapısı kullanılarak yazılır. Sayfadaki ifadelerin {} kullanımına dikkat edin. Bu ifadeler yöntemi kullanılarak TemplateInstance öğesine data() geçirilen değerleri kullanır. Qute hakkında daha fazla bilgi için bkz . Qute şablon oluşturma altyapısı.

<html>
    <head>
        <meta charset="UTF-8">
        <title>Profile</title>
    </head>
    <body>
        <h1>Hello, {name}</h1>
        <h2>Roles</h2>
        <ul>
            {#if roles}
                {#for role in roles}
                    <li>{role}</li>
                {/for}
            {#else}
                <li>No roles found!</li>
            {/if}
        </ul>
        <h2>Scopes</h2>
        <p>
            {scopes}
        </p>
        <h1>
            <b><a href="/logout">Sign out</a></b>
        </h1>
    </body>
</html>

Oturum kapatıldıktan sonra kullanıcı hoş geldiniz sayfasına yönlendirilir ve yeniden oturum açabilir.

Quarkus uygulamasını çalıştırma ve test edin

Bu bölümde, OpenID Connect sağlayıcısı olarak Microsoft Entra ID ile nasıl çalıştığını görmek için Quarkus uygulamasını çalıştırıp test edin.

Uygulama kaydına yeniden yönlendirme URI'sini ekleme

Uygulamayı başarıyla çalıştırmak ve yerel olarak test etmek için uygulama kaydına yeniden yönlendirme URI'sini eklemeniz gerekir. Hızlı Başlangıç' ın Yeniden yönlendirme URI'sini ekleme bölümündeki yönergeleri izleyin: Uygulamayı Microsoft kimlik platformu kaydetme ve aşağıdaki değerleri kullanma:

  • Platformları yapılandır için Web'i seçin.
  • Yeniden yönlendirme URI'leri için girinhttp://localhost:8080.

Örneği hazırlama

Örnek Quarkus uygulamasını hazırlamak için aşağıdaki adımları kullanın:

  1. GitHub'dan örnek Quarkus uygulamasını kopyalamak ve entra-id-quarkus dizinine gitmek için aşağıdaki komutları kullanın:

    git clone https://github.com/Azure-Samples/quarkus-azure
    cd quarkus-azure/entra-id-quarkus
    git checkout 2024-09-26
    

    Ayrılmış HEAD durumunda olduğunu belirten bir ileti görürseniz, bu iletiyi yoksaymak güvenlidir. Bu makale herhangi bir işleme gerektirmediğinden, ayrılmış HEAD durumu uygundur.

  2. Aşağıdaki ortam değişkenlerini daha önce yazdığınız değerlerle tanımlamak için aşağıdaki komutları kullanın:

    export QUARKUS_OIDC_CLIENT_ID=<application/client-ID>
    export QUARKUS_OIDC_CREDENTIALS_SECRET=<client-secret>
    export QUARKUS_OIDC_AUTH_SERVER_URL=https://login.microsoftonline.com/<directory/tenant-ID>/v2.0
    

    Bu ortam değişkenleri, Quarkus'ta OpenID Connect'in yerleşik desteği için değerleri sağlar. içindeki ilgili özellikler application.properties aşağıdaki örnekte gösterilmiştir.

    quarkus.oidc.client-id=
    quarkus.oidc.credentials.secret=
    quarkus.oidc.auth-server-url=
    

    içinde bir özelliğin değeri boşsa application.properties, Quarkus özellik adını bir ortam değişkenine dönüştürür ve ortamdan değeri okur. Adlandırma dönüştürme hakkında ayrıntılı bilgi için bkz . MicroProfile Config belirtimi.

Quarkus uygulamasını çalıştırma

Quarkus uygulamasını farklı modlarda çalıştırabilirsiniz. Quarkus uygulamasını çalıştırmak için aşağıdaki yöntemlerden birini seçin. Quarkus'un Microsoft Entra Id'ye bağlanmasını sağlamak için, önceki bölümde gösterilen ortam değişkenlerini tanımladığınız kabukta komutunu çalıştırdığınızdan emin olun.

  • Quarkus uygulamasını geliştirme modunda çalıştırın:

    mvn quarkus:dev
    
  • Quarkus uygulamasını JVM modunda çalıştırın:

    mvn install
    java -jar target/quarkus-app/quarkus-run.jar
    
  • Quarkus uygulamasını yerel modda çalıştırın:

    mvn install -Dnative -Dquarkus.native.container-build
    ./target/quarkus-ad-1.0.0-SNAPSHOT-runner
    

Farklı modlar denemek istiyorsanız Quarkus uygulamasını durdurmak için Ctrlve ardından Quarkus uygulamasını başka bir modda çalıştırın.

Quarkus uygulamasını test edin

Quarkus uygulaması çalıştırıldıktan sonra, özel sekmeli bir web tarayıcısı açın ve adresine http://localhost:8080gidin. Kullanıcı olarak veya yönetici olarak oturum açmak için bağlantıların olduğu hoş geldiniz sayfasını görmeniz gerekir. Özel sekme kullanmak, normal tarayıcınızda sahip olabileceğiniz mevcut Microsoft Entra ID etkinliğini kirletmenizi önler.

Hoş geldiniz sayfasını gösteren örnek uygulamanın ekran görüntüsü.

İki kullanıcının kimlik bilgilerini toplama

Bu makalede Microsoft Entra Id, oturum açmak için her kullanıcının e-posta adresini kullanıcı kimliği olarak kullanır. Yönetici kullanıcının ve normal kullanıcının e-posta adresini almak için aşağıdaki adımları kullanın:

  1. Microsoft Entra yönetim merkezinde en az Bir Bulut Uygulaması Yöneticisi olarak oturum açın.
  2. Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden uygulamayı kaydetmek istediğiniz kiracıya geçmek için üst menüdeki Ayarlar simgesini ( ) kullanın.
  3. Kimlik > Kullanıcıları Tüm Kullanıcılar'a> göz atın.
  4. Listede yönetici kullanıcıyı bulun ve seçin.
  5. Kullanıcı asıl adı alanını bulun.
  6. Kullanıcının e-posta adresini panoya kaydetmek için alanın değerinin yanındaki kopyala simgesini kullanın. Değeri daha sonra kullanmak üzere kaydedin.
  7. Normal kullanıcının e-posta adresini almak için aynı adımları izleyin.

Yönetici kullanıcının ve kullanıcıları oluştururken ayarladığınız normal kullanıcının parolalarını kullanın.

Uygulamanın işlevselliğini alıştırma

İşlevselliği uygulamak için aşağıdaki adımları kullanın:

  1. Kullanıcı olarak oturum aç bağlantısını seçin. Daha önce oluşturduğunuz normal kullanıcıyla oturum açın. Oturum açtığınızda, Microsoft Entra Id sizi adınızı, rollerinizi ve kapsamlarınızı gördüğünüz profil sayfasına yönlendirir.

    Kullanıcı profilini gösteren örnek uygulamanın ekran görüntüsü.

  2. İlk kez oturum açarsanız parolanızı güncelleştirmeniz istenir. Parolanızı güncelleştirmek için yönergeleri izleyin.

  3. Kuruluşunuzda sorulursa ek güvenlik bilgileri gerekir. Microsoft Authenticator uygulamasını indirip ayarlamak için istemleri izleyin, teste devam etmek için Daha sonra sor'u seçebilirsiniz.

  4. İstenen İzinler istenirse, uygulama tarafından istenen izinleri gözden geçirin. Teste devam etmek için Kabul Et'i seçin.

  5. Quarkus uygulamasında oturumu kapatmak için Oturumu kapat'ı seçin. Microsoft Entra Id oturumu kapatma işlemini gerçekleştirir. Oturumu kapattırdıktan sonra, Microsoft Entra Id sizi hoş geldiniz sayfasına yönlendirir.

  6. Yönetici olarak oturum aç bağlantısını seçin. Microsoft Entra Id sizi oturum açma sayfasına yönlendirir. Daha önce oluşturduğunuz yönetici kullanıcıyla oturum açın. Oturum açtığınızda, Microsoft Entra Id sizi farklı bir role adminsahip benzer profil sayfasına yönlendirir.

    Yönetici profilini gösteren örnek uygulamanın ekran görüntüsü.

  7. Oturumu yeniden kapatın ve daha önce oluşturduğunuz normal kullanıcıyla yönetici olarak oturum açmayı deneyin. Normal kullanıcının rolü olmadığından admin bir hata iletisi görmeniz gerekir.

    Erişim reddedildi iletisini gösteren örnek uygulamanın ekran görüntüsü.

Kaynakları temizleme

Bu makale, uygulamanızı Azure'a dağıtmaya yönlendirmez. Microsoft Entra Id kaynakları olsa da, uygulama için temizliğe yönelik Azure kaynağı yoktur. Azure'da bir uygulama dağıtmak için sonraki bölümde başvuruda bulunan yönergeleri izleyebilirsiniz.

Bu örnek uygulamanın kaynaklarıyla bitirdiğinizde, Microsoft Entra Id kaynaklarını temizlemek için aşağıdaki adımları kullanın. Kullanılmayan Microsoft Entra Id kaynaklarının kaldırılması önemli bir güvenlik en iyi uygulamasıdır.

  1. Microsoft kimlik platformu kayıtlı bir uygulamayı kaldırma bölümünde yer alan adımları izleyerek oluşturduğunuz uygulama kaydını kaldırın. Yalnızca kuruluşunuz tarafından yazılan bir uygulamayı kaldırma bölümündeki adımları izlemeniz gerekir.
  2. Uygulama kaydını kaldırma eylemi, kurumsal uygulamayı da silmelidir. Kurumsal uygulamaları silme hakkında daha fazla bilgi için bkz . Kurumsal uygulamayı silme.
  3. Kullanıcıları oluşturma, davet etme ve silme adımlarını izleyerek oluşturduğunuz kullanıcıları silin.

Sonraki adımlar

Bu hızlı başlangıçta, OpenID Connect kullanarak Quarkus uygulamalarını Microsoft Entra ID ile koruyacaksınız. Daha fazla bilgi edinmek için aşağıdaki kaynakları inceleyin: