Alfresco Identity Service'i OpenID Connect (OIDC) aracılığıyla Okta'ya yönelik bir kimlik aracısı olarak yapılandırmak için gereken her şeyi ele alacağız.
Bunu neden yapıyoruz? Kimlik Hizmeti için Alfresco belgeleri eksiktir ve hatta bazı durumlarda diğer belgelerle çelişmektedir. Alfresco, Kimlik Hizmetinin nasıl kurulacağı hakkında bir yazı yazdı ancak bu yazı çok eski ve yeterince ayrıntı vermiyor.
Bu makalede, Kimlik Hizmetini kullanmak için Alfresco İçerik Hizmetlerini (ACS), Alfresco Süreç Hizmetlerini (APS) ve Alfresco Geliştirme Çerçevesi (ADF) tabanlı uygulamayı yapılandıracağız.
Kimlik Hizmeti tarafından birden fazla ACS sürümü desteklenmektedir ancak bu örnekte 6.2.2 kullanıyoruz. Ayrıca APS için SSO'yu etkinleştirmek istiyorsanız APS 1.9+ kullanmanız gerekir. İşleri ayarlamadan önce Alfresco'nun Kimlik Hizmeti için desteklenen platformların tam listesini inceleyin.
Bu makale boyunca, bu çözümü oluşturan çeşitli bileşenlerle eşlenen URL'lere başvuracağız. Bunlar:
Bileşen | URL'si |
---|---|
Alfresco Kimlik Hizmeti | https://identityservice.argondigital.com |
Alfresco İçerik Hizmetleri | https://alfresco.argondigital.com |
Alfresco Proses Hizmetleri | https://process.argondigital.com |
Alfresco Geliştirme Çerçevesi Uygulaması | https://adf.argondigital.com |
Okta | https://argondigital.okta.com |
Hadi dalalım.
Kimlik Hizmetini Yükleme ve Yapılandırma
Alfresco Identity Service, aslında Alfresco'ya özgü bazı varsayılan yapılandırmaları içeren, Red Hat'in Keycloak'ının dış görünüşlü bir versiyonudur .
Kimlik Hizmeti, bağımsız bir JBoss sunucusunun yanı sıra yerleşik bir H2 veritabanını da içerdiğinden, onu kullanmak için hiçbir ek bileşene gerek yoktur. Ayrıca Kimlik Hizmetini kullanmak için ACS gibi diğer Alfresco bileşenlerine gerek yoktur.
Kimlik Hizmeti bir kimlik sağlayıcı (IdP) olarak yapılandırılabilse de, kimlik doğrulamanın harici bir IdP'ye (bu durumda Okta) devredilebileceği bir kimlik aracısı olarak kullanma adımlarını izleyeceğiz. Alfresco dokümantasyonu bu tür bir kurulumu tam olarak açıklamıyor, bu yüzden bunun çalışması için tam olarak neye ihtiyaç duyulduğunu açıklayacağız.
Kimlik Hizmeti, her kullanıcıya Kimlik Hizmeti örneği içinde yetki verilmesini gerektirir. Bu manuel olarak yapılabilir veya hizmeti, kullanıcıları senkronize etmek için bir LDAP mağazasına bağlanacak şekilde yapılandırabilirsiniz. Kullanıcıları senkronize ediyorsanız IdP'nizin (örn. Okta) da aynı kullanıcılara sahip olması beklenir. Bu konuda daha fazla bilgi için aşağıdaki “ Kullanıcı Kurulumu ” bölümüne bakın . Not: Kimlik Hizmetini kullanıcılara ilk kimlik doğrulamalarında yetki verecek şekilde yapılandırabilirsiniz; bu yazıda bu kurulumu ele almayacağız.
Kurulum Adımları
Alfresco Identity Service'i çalışır duruma getirmek için şu adımları izleyin:
- Zip'i Alfresco'dan indirin. Bizim durumumuzda Identity Service 1.6.0 kullanıyoruz
- Zip dosyasını Kimlik Hizmetini çalıştıracak sunucuya çıkarın
- Windows kullanıyorsanız ve Kimlik Hizmetinin bir hizmet olarak çalışmasını istiyorsanız, onu çalışır hale getirmek için NSSM gibi bir şey kullanmanız gerekir.
- Örneğimizde, hizmet için aşağıdaki parametrelerle NSSM'yi kullanıyoruz:
- Yol : %Identity Service Root%\bin\standalone.bat
- Başlangıç Dizini : %Identity Service Root%\bin
- Bağımsız Değişkenler : -Djboss.socket.binding.port-offset=100 (Kimlik Hizmeti bağlantı noktası numaralarıyla ilgili aşağıdaki bölüme bakın)
- Örneğimizde, hizmet için aşağıdaki parametrelerle NSSM'yi kullanıyoruz:
- Kimlik Hizmeti JBoss örneğiyle varsayılan bağlantı noktası numaralarını kullanabilirsiniz (HTTP için 8080, HTTPS için 8443, AJP için 8009 (Apache ile çalışıyorsanız)) ancak bunlar kullandığınız sunucuda ayrılmış olabilir. Bu durumda, JBoss sunucusunu (komut satırından veya hizmet olarak) – “-Djboss.socket.binding.port-offset=100” kullanarak başlatmanızı öneririz. Bu, tüm bağlantı noktalarını belirtilen uzaklığa göre kaydıracaktır. Yani 8443, 8543 olacaktır. Bu yazı için uzaklık olarak 100'ü kullanıyoruz, dolayısıyla Kimlik Hizmetine erişmek için kullanacağımız bağlantı noktası 8543 olacaktır.
- Kimlik Hizmeti, yapılandırma verilerini ve kullanıcı bilgilerini depolamak için kullanılan kendi yerleşik H2 sürümüyle birlikte gelir. İsterseniz Postgres veya MySQL gibi alternatif bir ilişkisel veritabanı kullanabilirsiniz. Kurulumumuz için gömülü H2 veritabanını kullanıyoruz, dolayısıyla ek veritabanı yapılandırmasına gerek yok
- Kimlik Hizmetini bir hizmet olarak çalışacak şekilde ayarladıktan sonra devam edin ve başlatın. Sunucu günlüklerini %Identity Service Root%/standalone/log/server.log adresinden kontrol edebilirsiniz.
- Sunucunun doğru şekilde başladığını varsayarsak, örneğin https://identityservice.argondigital.com:8543/auth adresini kullanarak yöneticiye göz atabilirsiniz.
- Kimlik Hizmeti, kendi imzasını taşıyan SSL sertifikasıyla birlikte gelir. Bu nedenle, tarayıcınız erişmeye çalıştığınızda muhtemelen bir uyarı gösterecektir. Geliştirme/test için bu sertifikaya güvenebilirsiniz ancak üretim ortamı için kendi sertifikanızı Kimlik Hizmeti anahtar deposuna eklemek isteyeceksiniz
- Kimlik Hizmeti anahtar deposunun varsayılan konumu %Identity Service Root%/standalone/application.keystore'dur.
- Sertifikanızı OOTB anahtar deposuna eklemenizi ve ona özel bir takma ad (ör. "anahtar depom-takma ad") vermenizi öneririz. Bunu yaparsanız Kimlik Hizmeti sunucusunun "standalone.xml" dosyasını (%Identity Service Root%/standalone/configuraiton/standalone.xml) bunu yansıtacak şekilde güncellemeniz gerekecektir. "Sunucu kimlikleri" altında buna benzer şekilde güncellenmesi gereken bir "ssl" öğesi vardır:
<keystore path="application.keystore" relative-to="jboss.server.config.dir" keystore-password="password" alias="my-keystore-alias" key-password="password" generate-self-signed-certificate-host="localhost"></keystore>
Kopyala
Yöneticiye ilk kez eriştiğinizde sizden bir yönetici kullanıcı adı ve şifresi oluşturmanız istenecektir:
Kimlik Hizmetini Yapılandırma
Kimlik Hizmeti'ni bir kimlik aracısı olarak kullanmak için Kimlik Hizmeti sunucusunda bir dizi öğe kurmamız gerekir. Bunların her birini aşağıda kendi yapılandırma bölümlerine ayırdık:
- Bölge Yapılandırması
- İstemci Yapılandırması
- Kullanıcı Senkronizasyon Yapılandırması
- Kimlik Doğrulama Akışı Yapılandırması
- Kimlik Sağlayıcı Yapılandırması
Bölge Yapılandırması
Alfresco Identity Service, "alfresco" adı verilen varsayılan bir alanla birlikte gelir (Alfresco'yla ilgili daha fazla ayrıntı burada ).
Bu yazıda ayrıntılarıyla anlattığımız kurulum türü için zaten yapılandırılmış olduğundan OOTB alanını kullanmanızı öneririz.
Ayrıca “Giriş” bölümünün altında “E-posta ile giriş yap” seçeneğinin etkinleştirildiğinden emin olun.
Geri kalan bölge yapılandırması, varsayılan yapılandırmadan "olduğu gibi" bırakılabilir ancak ayarları gözden geçirerek kuruluşunuzun yönergelerine uygun olduklarından emin olun.
İstemci Yapılandırması
Kimlik Hizmetinde, kimlik doğrulama ve biletleme için Kimlik Hizmeti'nden yararlanacak uygulamaların her biri için "istemci" girişleri oluşturabilirsiniz. Örneğimizde istemcileri aşağıdakiler için ayarlayacağız:
- Alfresco İçerik Hizmeti
- Alfresco'da Paylaş
- Alfresco Proses Hizmetleri
- Alfresco Geliştirme Çerçevesi Uygulaması
Alfresco İçerik Hizmetleri İstemcisi
Alfresco, kullanıma hazır olarak "alfresco" adlı bir müşteriyle birlikte gelir. Bu istemcinin ayarlarının *en azından* aşağıdaki ayara sahip olduğundan emin olun:
- Müşteri Kimliği - açık havada (not: burada istediğiniz kimliği kullanabilirsiniz ancak buna daha sonra başvuracaksınız, bu nedenle onu takip edin. Bu yazı için "açık havada" ile yetineceğiz
- Etkin – açık
- İstemci Protokolü – openid-connect (bu, ACS'nin Kimlik Hizmeti ile iletişim kurmak için kullanacağı protokoldür)
- Erişim Türü – genel
- Standart Akış Etkin – açık
- Örtülü Akış Etkin – açık
- Doğrudan Erişim İzinleri Etkinleştirildi – açık
- Geçerli Yönlendirme URI'leri – Geliştirme amacıyla, tüm URI'leri belirtmek için “*” kullanabilirsiniz ancak üretim ortamında bu listenin ACS deponuzun URL'lerini içermesini istersiniz (örn. https://alfresco.argondigital) .com*)
- Web Kaynakları – SSO amaçları doğrultusunda Kimlik Hizmetine erişecek ana bilgisayar adlarının listesi. Geliştirme için “*” kullanabilirsiniz ancak üretim için bu, ACS depo URL'niz olmalıdır (örn. https://alfresco.argondigital.com*)
Alfresco Paylaşım İstemcisi
Alfresco Share kullanıyorsanız ve SSO'yu etkinleştirmek istiyorsanız Kimlik Hizmetinde bir istemci tanımlamanız gerekir. Bunu yapmak için “Müşteriler”e ve ardından sağ üstteki “Oluştur” butonuna tıklayın:
Bu istemci için *en azından* aşağıdaki sete ihtiyacınız var:
- Müşteri Kimliği – paylaş (not: burada istediğiniz kimliği kullanabilirsiniz ancak buna daha sonra başvuracaksınız, bu nedenle onu takip edin. Bu yazı için “paylaş”ı kullanıyoruz)
- Etkin – açık
- İstemci Protokolü - openid-connect (bu, Alfresco Share'in Kimlik Hizmeti ile iletişim kurmak için kullanacağı protokoldür)
- Erişim Türü – genel
- Standart Akış Etkin – açık
- Örtülü Akış Etkin – kapalı
- Doğrudan Erişim İzinleri Etkin – kapalı
- Geçerli Yönlendirme URI'leri – Geliştirme amacıyla, tüm URI'leri belirtmek için “*” kullanabilirsiniz ancak üretim ortamında bu listenin Paylaşım sunucunuzun URL'lerini içermesini istersiniz (örn. https://alfresco.argondigital) .com*) (not: Alfresco Share'i ACS ile aynı sunucuda çalıştırıyoruz, dolayısıyla ana bilgisayar adı "alfresco" istemcisinde kullandığımızla aynı olur)
- Temel URL – İnsanların Alfresco Share'e erişmek için kullandığı birincil URL. Örneğimizde bu https://alfresco.argondigital.com/share/
- Web Kaynakları – SSO amaçları doğrultusunda Kimlik Hizmetine erişecek ana bilgisayar adlarının listesi. Geliştirme için “*” kullanabilirsiniz ancak üretim için bu, Alfresco Paylaşım URL'niz olmalıdır (örn. https://alfresco.argondigital.com*)
Alfresco Süreç Hizmetleri İstemcisi
Alfresco Process Services 1.11+ kullanıyorsanız ve SSO'yu etkinleştirmek istiyorsanız Kimlik Hizmetinde bir istemci tanımlamanız gerekir. Bunu yapmak için “Müşteriler”e ve ardından sağ üstteki “Oluştur” butonuna tıklayın:
Bu müşteri için *en azından* aşağıdaki seti isteyeceksiniz:
- Müşteri Kimliği – Alfresco-süreç-hizmetleri (not: burada istediğiniz kimliği kullanabilirsiniz ancak buna daha sonra başvuracaksınız, bu nedenle onu takip edin. Bu yazı için “Alfresco-süreç-hizmetleri” kullanıyoruz)
- Etkin – açık
- İstemci Protokolü – openid-connect (bu, APS'nin Kimlik Hizmeti ile iletişim kurmak için kullanacağı protokoldür)
- Erişim Türü – genel
- Standart Akış Etkin –
açık Örtülü Akış Etkin – kapalı - Doğrudan Erişim İzinleri Etkin – kapalı (not: Activiti Yöneticisini mi kullanıyorsunuz? Bunun için özel bir yapılandırma oluşturmanız gerekecek )
- Geçerli Yönlendirme URI'leri – Geliştirme amacıyla, tüm URI'leri belirtmek için “*” kullanabilirsiniz, ancak üretim ortamında bu listenin APS sunucunuzun URL'lerini içermesini istersiniz (örn. https://process.argondigital) .com*)
- Temel URL – İnsanların Alfresco Process Services'e erişmek için kullandığı birincil URL. Örneğimizde bu https://process.argondigital.com/activiti-app
- Web Kaynakları – SSO amaçları doğrultusunda Kimlik Hizmetine erişecek ana bilgisayar adlarının listesi. Geliştirme için “*” kullanabilirsiniz ancak üretim için bu sizin APS URL'niz olmalıdır (örn. https://process.argondigital.com*)
Alfresco Geliştirme Çerçevesi Uygulama İstemcisi
Özel bir ADF uygulaması oluşturduysanız (veya Alfresco'nun Digital Workspace ADF uygulamasını kullanıyorsanız) ve SSO'yu etkinleştirmek istiyorsanız Kimlik Hizmetinde bir istemci tanımlamanız gerekir. Bunu yapmak için “Müşteriler”e ve ardından sağ üstteki “Oluştur” butonuna tıklayın:
Bu istemci için *en azından* aşağıdaki sete ihtiyacınız var:
- Müşteri Kimliği – alfresco-adf (not: burada istediğiniz kimliği kullanabilirsiniz ancak buna daha sonra başvuracaksınız, bu nedenle onu takip edin. Bu yazı için “alfresco-adf” kullanıyoruz)
- Etkin – açık
- İstemci Protokolü - openid-connect (bu, ADF uygulamasının Kimlik Hizmeti ile iletişim kurmak için kullanacağı protokoldür)
- Erişim Türü – genel
- Standart Akış Etkin – kapalı
- Örtülü Akış Etkin – açık
- Doğrudan Erişim İzinleri Etkin – kapalı
- Geçerli Yönlendirme URI'leri – Geliştirme amacıyla, tüm URI'leri belirtmek için “*” kullanabilirsiniz, ancak üretim ortamında bu listenin ADF uygulamanızın URL'lerini içermesini istersiniz (örn. https://adf.argondigital) .com*)
- Temel URL – İnsanların ADF uygulamanıza erişmek için kullandığı birincil URL. Örneğimizde bu https://adf.argondigital.com
- Web Kaynakları – SSO amaçları doğrultusunda Kimlik Hizmetine erişecek ana bilgisayar adlarının listesi. Geliştirme için "*" kullanabilirsiniz ancak üretim için bu, ADF uygulama URL'niz olmalıdır (ör. https://adf.argondigital.com*)
Kullanıcı Senkronizasyon Yapılandırması
Açıkladığımız kurulumda bir kullanıcının kimlik doğrulaması yapabilmesi için aşağıdaki alanların her birinde bir kullanıcı hesabının mevcut olması gerekir:
- Uygun Alfresco uygulamasında (ACS ve/veya APS)
- Kimlik Hizmetinde
- IdP'de
Müşteri projelerimizin çoğunda kullanıcı verileri için LDAP kullanılıyor. Bu şekilde, yukarıdaki alanların tümü LDAP ile senkronize edilmiş olacaktır. Bu, her sistemde kullanıcıların manuel olarak ayarlanması ihtiyacını ortadan kaldırır.
Bu yazıda Alfresco ürünlerinde veya IdP'de LDAP senkronizasyonunun ayarlanmasıyla ilgili ayrıntılara girmeyeceğiz.
Kimlik Hizmetinde LDAP ile senkronizasyon ayarlamak basittir. “Kullanıcı Federasyonu”na giderek başlayın ve sağlayıcı olarak “ldap”ı seçin:
Kurulumunuza özel olacağından bu sağlayıcıya ilişkin tüm ayarları ayrıntılı olarak açıklamayacağız, ancak kullanıcıların Kimlik Hizmetinde düzgün görünmesi için ayarlanması gereken yapılandırmalar şunlardır:
- Etkin – açık
- Kullanıcıları İçe Aktar – açık
- Periyodik Tam Senkronizasyon (“Senkronizasyon Ayarları” altında) – açık
- Tam Senkronizasyon Dönemi – bir sonraki tam senkronizasyon çalıştırmasından önceki saniye sayısı – bu sayı tamamen ihtiyaçlarınıza göre size bağlıdır
- Periyodik Olarak Değiştirilen Kullanıcı Senkronizasyonu (“Senkronizasyon Ayarları” altında) – açık
- Değiştirilen Kullanıcı Senkronizasyon Dönemi – bir sonraki değiştirilen senkronizasyon çalıştırmasından önceki saniye sayısı – bu sayı tamamen ihtiyaçlarınıza göre size bağlıdır
Örneğimizde tüm bu sistemler arasında kullanıcı anahtarı olarak e-posta adresini kullandığımızı da belirtmek önemlidir. Başka bir benzersiz kimlik kullanmak mümkündür ancak böyle bir yapılandırmanın ayrıntıları bu makalenin kapsamı dışındadır.
Kimlik Hizmetini bir geliştirme veya test ortamında kuruyorsanız, kullanıcıları Kimlik Hizmetinin "Kullanıcılar" bölümü altında manuel olarak ayarlayabilirsiniz. Not: LDAP deponuzla senkronize edilen sistemlere sahip değilseniz, bu kullanıcıları ACS/APS'de ve IdP'de manuel olarak ayarlamanız da gerekir.
Kimlik Doğrulama Akışı Yapılandırması
Kimlik Hizmeti birkaç "kimlik doğrulama akışı" OOTB ile birlikte gelir. Bu akışlar, Kullanıcı Kimlik Hizmetinde (ve Kimlik Hizmetini aracı olarak kullanıyorsanız dolaylı olarak yapılandırılmış Kimlik Sağlayıcıda) kimlik doğrulaması yapmaya çalıştığında kullanıcıya ne olması gerektiğini tanımlar.
Kurulumumuzda, IdP'yi yalnızca Alfresco istemcilerimizde (örn. ACS/APS) zaten mevcut olan ve Kimlik Hizmetinde kullanıcı olarak oluşturulmuş kullanıcıların kimliğini doğrulamak için kullandığımızdan emin olmak istiyoruz. Okta (yani IdP) ile başarılı bir şekilde kimlik doğrulaması yaptıkları takdirde Kimlik Hizmetinin bu kullanıcıları otomatik olarak oluşturmasını istemiyoruz.
Yukarıdaki senaryoyu ele almak için, bir kullanıcının IdP ile ilk kez kimlik doğrulaması yapması için yeni bir kimlik doğrulama akışı oluşturacağız. Bunu yapmanın adımları şunlardır:
- Kimlik Hizmetinde "Kimlik Doğrulama"ya gidin ve "Yeni" düğmesini tıklayın
- “Takma Ad” için “Alfresco – İlk Broker Girişi” gibi bir ad seçin
- “Üst Düzey Akış Türü” için “genel”i seçin
- “Kaydet”e basın
- Kimlik doğrulama açılır menüsünde “Alfresco – First Broker Login” seçeneğinin seçili olduğundan emin olun. Daha sonra “Yürütme Ekle”ye basın
- “Sağlayıcı” altında, “Mevcut Aracı Kullanıcıyı Algıla” seçeneğini seçin
- “Kaydet”e basın
- Tekrar “Yürütme Ekle”ye basın
- “Sağlayıcı” altında, “Mevcut Kullanıcıyı Otomatik Olarak Ayarla” seçeneğini seçin
- “Kaydet”e basın
- “Alfresco – First Broker Login” ana kimlik doğrulama ekranında, “Gereksinim” radyo düğmelerinin aşağıdaki gibi seçildiğinden emin olun:
- Mevcut Broker Kullanıcısını Algıla – Gerekli
- Mevcut Kullanıcıyı Otomatik Olarak Ayarla – Gerekli
Yukarıdaki kimlik doğrulama akışı, yalnızca bilinen kullanıcıların Kimlik Hizmeti ile kimlik doğrulaması yapabilmesini sağlayacaktır. Ek olarak, "Mevcut Kullanıcıyı Otomatik Olarak Ayarla" yürütme adımı, Kimlik Hizmeti'ndeki kullanıcıyı IdP'ye (aşağıda yapılandıracağız) "bağlayacaktır".
Kimlik Hizmetinin içerdiği OOTB “İlk Broker Girişi” akışı, özel ihtiyaçlarımız için istemediğimiz bir dizi adıma sahiptir. Kuruluşunuz için işe yarayacaksa kesinlikle kullanabilirsiniz veya ilk oturum açma işlemleri için gereken kimlik doğrulama akışlarını/yürütmelerini oluşturabilirsiniz.
Kimlik Sağlayıcı Yapılandırması
Artık Kimlik Hizmetiyle konuşacak istemcileri yapılandırdığımıza göre, Kimlik Hizmetinin kullanıcıların kimliğini doğrulamak için kullanacağı Kimlik Sağlayıcıyı (IdP) ayarlamamız gerekiyor. Kimlik Hizmetinin bir kimlik aracısı olarak işlev görecek şekilde yapılandırıldığı yer burasıdır.
Örneğimizde, Kimlik Hizmetinde OpenID Connect v1.0'ı kullanarak yeni bir Kimlik Sağlayıcı ayarlayacağız:
Not: Kimlik Hizmeti için Alfresco belgeleri, yapılandırmaları için SAML'yi kullanır. Bu teknik olarak desteklense de, kurulumu inanılmaz derecede zor bulduk ve OIDC'yi tercih ettik. IdP'niz destekliyorsa basitlik açısından OIDC'yi kullanmanızı öneririz.
Yeni bir OIDC Kimlik Sağlayıcısı yapılandırılırken aşağıdaki değerler kullanılmalıdır:
- Yönlendirme URI'si – Bu değer, Kimlik Hizmeti sunucusuna erişmek için kullandığınız URL'ye göre otomatik olarak belirlenir. Bu neden önemli? Bu, IdP'de ayarladığınız URL olacaktır (aşağıdaki "Okta" bölümüne bakın). Bu nedenle, Kimlik Hizmeti sunucusunu tam olarak insanların kimlik doğrulaması yaparken kullanmasını beklediğiniz gibi kurduğunuzdan emin olmak istersiniz (örneğin, bağlantı noktası numarasının gerçekten istediğiniz gibi olduğundan emin olun; Apache ile çalışıyorsanız URL'yi kullanın). bağlantı noktası olmadan; SSL vb. kullandığınızdan emin olun)
- Takma ad – Kurulumumuz için “oidc” kullanacağız. Not: Bu takma ad, yapılandırmamızın başka bir yerinde kullanılır ve Kimlik Hizmeti'nde IdP girişini oluşturduktan sonra değiştirilemez (sağlayıcıyı yeniden sıfırdan ayarlamadan), bu nedenle seçimi dikkatli yapın
- Görünen Ad – Bu, Kimlik Hizmeti yönetici kullanıcı arayüzünde gösterilen addır. İsterseniz bu değeri daha sonra değiştirebilirsiniz
- Etkin – açık
- İlk Oturum Açma Akışı – Yukarıda Kimlik Doğrulama Akışını ayarlarken tanımladığımız “Takma Ad”ı kullanın. Bizim durumumuzda bu “Alfresco – İlk Broker Girişi”
- Senkronizasyon Modu – içe aktarma
- Yetkilendirme URL'si – %Kuruluşunuzun Okta ana bilgisayar adı%/oauth2/default/v1/authorize (Kurulumumuzda bu https://argondigital.okta.com/oauth2/default/v1/authorize'dir)
- Belirteç URL'si – %Kuruluşunuzun Okta ana bilgisayar adı%/oauth2/default/v1/token (Kurulumumuzda bu https://argondigital.okta.com/oauth2/default/v1/token'dir)
- Oturum kapatma URL'si – %Kuruluşunuzun Okta ana bilgisayar adı%/oauth2/default/v1/logout (Kurulumumuzda bu https://argondigital.okta.com/oauth2/default/v1/logout'tur)
- Müşteri Kimlik Doğrulaması – Posta olarak gönderilen müşteri sırrı
- İstemci Kimliği – Kimlik Hizmetinde IdP girişinin ilk oluşturulmasının ardından bunu 1234 gibi sahte bir değere ayarlayın. Okta'nın gerçek müşteri kimliğini kullanmak için kurulum sırasında daha sonra geri döneceğiz.
- Müşteri Sırrı – Kimlik Hizmetinde IdP girişinin ilk oluşturulmasından sonra bunu 1234 gibi sahte bir değere ayarlayın. Okta'nın gerçek müşteri sırrını kullanmak için kurulumda daha sonra geri döneceğiz.
- Varsayılan kapsamlar – openid profil e-postası (not: bu gerçekten önemlidir. Bunu yapmazsanız, Kimlik Hizmeti, kullanıcıyı Kimlik Hizmeti'ndeki kullanıcıyla ilişkilendirmek için kullanıcının "e-posta" alanına erişemez. IdP'de)
- Bilgi istemi – belirtilmemiş
- Kimlik Hizmetinde Kimlik Sağlayıcıyı oluşturmak için "Kaydet"e basın.
Bu, Kimlik Hizmetinde gereken tüm başlangıç adımlarını tamamlar. Şimdi IdP'de (yani Okta) ihtiyaç duyulan konfigürasyonlara geçme zamanı.
Okta
Okta, bu kurulumda Kimlik Sağlayıcımız (IdP) olarak kullanılacak. Bunu yapmak için Identity Service'i Okta'da bir "uygulama" olarak kuracağız:
- Okta'da “Uygulamalar”->”Uygulamalar”a gidin ve “Uygulama Entegrasyonu Oluştur”u seçin
- “Oturum açma yöntemi” olarak “OIDC – OpenID Connect”i seçin
- “Uygulama Türü” olarak “Web Uygulaması”nı seçin
- “İleri”ye basın
- Uygulama ayrıntıları ekranında aşağıdaki değerleri girin:
- Uygulama Entegrasyon Adı – Alfresco Kimlik Hizmeti (gerçekten istediğiniz adı kullanabilirsiniz)
- "Bir kullanıcı adına hareket eden müşteri" altında şunları kontrol edin:
- "Yetki Kodu"
- “Örtülü (melez)”
- "Oturum açma yönlendirme URI'leri" için " https://identityservice.argondigital.com:8543/auth/realms/alfresco/broker/oidc/endpoint " ekleyin (Not: bu, ayarladığımızda görünen "Yönlendirme URI'sidir" Yukarıdaki Kimlik Hizmeti'nde Kimlik Sağlayıcı'yı açın)
- Bir "Oturum kapatma yönlendirme URI'si" belirtmenize gerek yoktur
- "Ödevler"in altında ihtiyaçlarınıza uygun doğru erişim kontrolünü seçin. Geliştirme için bu, "Kuruluşunuzdaki herkesin erişmesine izin ver" olabilir
- “Kaydet”e basın
- Okta uygulamanız kaydedildikten sonra bir Müşteri Kimliği ve Müşteri Sırrı oluşturulacaktır
- Hem İstemci Kimliği hem de İstemci Sırrı değerlerini kopyalayın
- Kimlik Hizmeti yönetici kullanıcı arayüzüne geri dönün ve "Kimlik Sağlayıcılar"ı seçin
- Yukarıda oluşturduğunuz Kimlik Sağlayıcıyı bulun ve "Düzenle"yi seçin
- Uygulamanız için Okta'dan oluşturulan değerlerle "İstemci Kimliği" ve "İstemci Sırrı"nı güncelleyin
- “Kaydet”e basın
SSO için Okta uygulamasının ilk kurulumunu tamamladık. Artık istemci uygulamalarımızı yapılandırmaya hazırız.
Alfresco İçerik Hizmetleri
ACS'nin Identity Service ile iletişim kurabilmesi için Alfresco global özellikler dosyasında (örn. /tomcat/shared/classes/alfresco-global.properties) bazı ayarlamalar yapmamız gerekiyor.
Aşağıdaki özellikleri ve değerlerini ekleyin:
identity-service.enable-basic-auth=true identity-service.authentication.defaultAdministratorUserNames=admin identity-service.authentication.validation.failure.silent=false identity-service.auth-server-url=https://identityservice.argondigital.com:8543/auth identity-service.realm=alfresco identity-service.resource=alfresco identity-service.public-client=true authentication.chain=identity-service-1:identity-service,alfrescoNtlm-1:alfrescoNtlm csrf.filter.referer=https://alfresco.argondigital.com csrf.filter.origin=https://alfresco.argondigital.com/*
Kopyala
Yukarıdaki konfigürasyonla ilgili birkaç not:
- "identity-service.realm" özelliği, Identity Service'te kullandığınız bölgenin adıyla eşleşmelidir. Örneğimizde OOTB "açık havada" alanını kullanıyoruz
- "identity-service.resource" özelliği aslında yapılandırmada kullandığımız "client" kimliği anlamına gelir. Tekrar ediyorum, eğer OOTB istemcisini kullanıyorsanız bu "açık havada" olacaktır.
- Kimlik doğrulama için zaten LDAP kullanıyorsanız büyük olasılıkla zaten "authentication.chain" özelliğine sahipsiniz. Böyle bir durumda değer listesine ilk değer olarak “identity-service-1:identity-service” eklediğinizden emin olun. Bu özelliğe henüz sahip değilseniz yukarıda kullandığımızı kullanabilirsiniz.
- “csrf.filter.referer” ve “csrf.filter.origin”, ACS veri havuzu sunucunuzun URL'leridir. Bu değerleri buna göre ayarlayın
- Yalnızca ACS 6.1 ve üzeri sürümler Kimlik Hizmetini destekler. Hala ACS'nin eski bir sürümünü kullanıyorsanız yükseltme hakkında daha fazla bilgi edinin
Bu değerlerin etkili olması için ACS'nin yeniden başlatılması gerekecektir.
Alfresco'da Paylaş
Alfresco Share için SSO kurulumu hakkında çevrimiçi araştırma yaptıysanız, muhtemelen Share'in "share-config-custom.xml" dosyasında bir dizi CSRFPolicy değerlendiricisinin etkinleştirilmesine yönelik önerilerle karşılaşmışsınızdır. Alfresco Share'i Kimlik Hizmetine bağlamak için OIDC kullandığımızdan bu yapılandırmada bunlara GEREK YOKTUR (Kimlik Hizmetine bağlanmak için SAML kullanıyorsanız bu yapılandırmalar gerekli olacaktır).
SSO'nun (OIDC aracılığıyla) çalışabilmesi için aşağıdaki yapılandırmayı “share-config-custom.xml” dosyasına eklemeniz gerekir. Bu dosyaya henüz sahip değilseniz, lütfen aşağıdaki Kimlik Hizmeti yapılandırmasını eklemeden önce bunu ayarlamak için Alfresco'nun belgelerini izleyin ( https://docs.alfresco.com/content-services/community/develop/share-ext-points/ paylaşım-config/ ). Eklenmesi gereken yapılandırma şu şekildedir:
<config evaluator="string-compare" condition="AIMS"> <enabled>true</enabled> <realm>alfresco</realm> <resource>share</resource> <authserverurl>https://identityservice.argondigital.com:8543/auth</authserverurl> <sslrequired>none</sslrequired> <publicclient>true</publicclient> <autodetectbeareronly>true</autodetectbeareronly> <alwaysrefreshtoken>true</alwaysrefreshtoken> <principalattribute>email</principalattribute> <enablebasicauth>true</enablebasicauth> </config>
Kopyala
Yukarıdaki konfigürasyonla ilgili birkaç not:
- "Bölge" özelliği, Kimlik Hizmetinde kullandığınız bölgenin adıyla eşleşmelidir. Örneğimizde OOTB "açık havada" alanını kullanıyoruz
- "Kaynak" özelliği gerçekten de Paylaşım için Kimlik Hizmeti istemci yapılandırmasında kullandığımız "istemci" kimliğidir. Bu makalede kullandığımız değerlerin aynısını kullanıyorsanız bu "paylaş" olacaktır.
Bu değişikliklerin yürürlüğe girmesi için Share web uygulamasını barındıran uygulama sunucusunun yeniden başlatılması gerekecektir.
Alfresco Süreç Hizmetleri
APS 1.9+, Alfresco Identity Service ile tamamen entegre olur.
APS SSO'yu etkinleştirmek için şu yola sahip yeni bir dosya oluşturmanız gerekir: \Tomcat\lib\activiti-identity-service.properties. Bu dosyanın içeriği şöyle olacaktır:
keycloak.enabled=true keycloak.realm=alfresco keycloak.auth-server-url=https://identityservice.argondigital.com:8543/auth keycloak.ssl-required=none keycloak.resource=alfresco-process-services keycloak.principal-attribute=email # set to true if access type is public for this client in keycloak keycloak.public-client=true # set secret key if access type is not public for this client in keycloak keycloak.always-refresh-token=true keycloak.autodetect-bearer-only=true keycloak.token-store=session keycloak.enable-basic-auth=true activiti.use-browser-based-logout=true # Content services Identity service configuration alfresco.content.sso.enabled=${keycloak.enabled} alfresco.content.sso.client_id=${keycloak.resource} alfresco.content.sso.client_secret=${keycloak.credentials.secret} alfresco.content.sso.realm=${keycloak.realm} alfresco.content.sso.scope=offline_access alfresco.content.sso.auth_uri=${keycloak.auth-server-url}/realms/${alfresco.content.sso.realm}/protocol/openid-connect/auth alfresco.content.sso.token_uri=${keycloak.auth-server-url}/realms/${alfresco.content.sso.realm}/protocol/openid-connect/token alfresco.content.sso.redirect_uri=https://process.argondigital.com/activiti-app/app/rest/integration/sso/confirm-auth-request
Kopyala
Yukarıdaki konfigürasyonla ilgili birkaç not:
- "keycloak.realm" özelliği, Identity Service'te kullandığınız bölgenin adıyla eşleşmelidir. Örneğimizde OOTB "açık havada" alanını kullanıyoruz
- “keycloak.resource” özelliği, Alfresco Process Service için Identity Service istemci yapılandırmasında kullandığımız “client” kimliğidir. Bu makalede kullandığımız değerlerin aynısını kullanıyorsanız, bu "açık havada işlem hizmetleri" olacaktır.
- APS'de SSO'yu etkinleştirdikten sonra, dahili bir kullanıcı kullanarak APS'de kimlik doğrulaması yapmanın hiçbir yolu yoktur (bu kullanıcı aynı zamanda Kimlik Hizmetinde ve IdP'nizde kurulmadığı sürece). Dolayısıyla, APS'yi yönetmek için "admin@app.activiti.com" OOTB hesabını kullanırsanız, SSO etkinleştirildikten sonra bu ilerlemeyi kullanamazsınız. Ne yazık ki, Alfresco'nun bir "TOA atlama" URL'sine sahip olduğu görünmüyor. SSO değişikliklerinizi yapmadan *önce* LDAP kullanıcılarınızdan en az birinin APS yöneticisi olarak yapılandırıldığından emin olmanızı öneririz. Bunu yapmayı unutursanız “keycloak.enabled=false” ayarını yapabilir, APS'yi yeniden başlatabilir ve geleneksel oturum açma mekanizmasını kullanarak oturum açabilirsiniz.
Bu değişikliklerin etkili olması için APS web uygulamasını barındıran uygulama sunucusunun yeniden başlatılması gerekecektir.
Activiti'nin Yönetici Uygulamasını mı kullanıyorsunuz? Okumaya devam etmek
Alfresco Process Services'i kullanıyorsanız, APS iş akışlarını izlemek ve yönetmek için bağımsız Activiti Admin uygulamasını da kullanma olasılığınız yüksektir. Activiti Admin uygulaması, İşlem Hizmetleri ile APS REST API aracılığıyla iletişim kurar . Activiti Admin içindeki bir yapılandırma seçeneği, yöneticilerin APS'deki bir kullanıcı için API ile iletişim kurmak için kullanılacak kimlik bilgilerini belirlemesine olanak tanır. Genellikle kullanıcı APS'de "hizmet" tipi bir hesap olarak oluşturulur; yani hesap yalnızca APS ile Activiti Admin arasındaki entegrasyon amacıyla mevcuttur.
APS'den farklı olarak Activiti Admin uygulaması doğrudan Kimlik Hizmetleriyle entegre edilemez. Sonuç olarak APS, Kimlik Hizmetini kullanacak şekilde yapılandırıldığında, Activiti Admin uygulaması, yapılandırılmış olan REST API kullanıcısının kimliğini doğru şekilde doğrulayamayacağı için düzgün çalışmayı durduracaktır. Teknik olarak APS, API kullanarak kimlik doğrulama isteklerini Kimlik Hizmetine devrediyor; artık bir hizmet hesabı gibi dahili APS hesapları için kimlik doğrulama gerçekleştirmeye çalışmıyor.
Ne yazık ki, bu özel kurulum hiçbir Alfresco belgesinde yer almamaktadır. Bu konuda birçok deneme yanılmadan sonra, Activiti Yöneticisinin Kimlik Hizmetini kullanırken APS ile doğru şekilde kimlik doğrulaması yapmasına izin vermek için sonunda neye ihtiyaç duyulduğunu bulduk.
Bunun nasıl yapılandırılması gerektiği aşağıda açıklanmıştır:
- APS'de yeni bir dahili kullanıcı oluşturulmalıdır. Buna "activiti-admin-service-account@foo.com" adını vereceğiz
- Yeni eklenen kullanıcı APS “Süper Kullanıcılar” grubuna yerleştirilmelidir.
- Kimlik Hizmetinde dizine yeni bir kullanıcı eklenmelidir. Bu kullanıcının kullanıcı adı, yukarıdaki 1. adımda kullanılan e-posta adresiyle eşleşmelidir
- Yeni oluşturulan Kimlik Hizmeti kullanıcısının her ikisi de "etkinleştirilmiş" ve "e-posta doğrulaması" doğru olarak ayarlanmış olmalıdır
- Kimlik Hizmeti'nde kullanıcı için açıkça bir şifre oluşturulmalıdır. Bu, söz konusu kullanıcının "Kimlik Bilgileri" sekmesi altında yapılabilir.
- APS Kimlik Hizmeti istemci yapılandırmasında "Doğrudan Erişim İzinleri Etkin" doğru olarak ayarlanmalıdır - Not: bunların hiçbiri bu ayar olmadan çalışmaz
- Activiti Admin REST yapılandırma ayarlarında kullanıcı adı olarak 1. adımda kullanılan e-posta adresi belirtilmelidir. Parola, bu kullanıcı için Kimlik Hizmeti'nde 5. adımda belirtilen parolayla eşleşmelidir.
Yukarıdaki yapılandırma uygulandığında APS, REST API kimlik doğrulamasını Kimlik Hizmetine devredecektir. Bu hizmet kullanıcısının Okta'da olmaması gerektiğini belirtmek önemlidir; bunun yerine bu yaklaşım, bu kullanıcının kimlik doğrulamasını Kimlik Hizmetine bırakmaktır.
Alfresco Geliştirme Çerçevesi
Kimlik Hizmeti desteği Alfresco Geliştirme Çerçevesinde 2.x'ten beri mevcuttur, ancak bu makalenin amaçları doğrultusunda ADF 4.4.0 üzerine kurulu bir ADF uygulaması kullanıyoruz.
Uygulamanızın “app.config.json” dosyasında aşağıdaki yapılandırmaya ihtiyacınız vardır:
"authType": "OAUTH", "oauth2": { "host": "https://identityservice.argondigital.com:8543/auth/realms/alfresco", "clientId": “alfresco-adf", "scope": "openid", "secret": "", "implicitFlow": true, "silentLogin": true, "publicUrls": [ "**/preview/s/*", "**/settings", "**/blank" ], "redirectSilentIframeUri": "https://adf.argondigital.com/assets/silent-refresh.html", "redirectUri": "/", "redirectUriLogout": "/logout" }
Kopyala
Yukarıdaki konfigürasyonla ilgili birkaç not:
- ACS, APS ve Paylaşım yapılandırmasının aksine, ADF yapılandırmasının bölge adı için ayrı bir özelliği yoktur. Bunun yerine, “ana bilgisayar” URL'sine eklenir (örn. “/realms/alfresco”)
- "ClientId" özelliği, istemciyi Kimlik Hizmetinde ayarlarken kullanılan istemci kimliğiyle eşleşir. Bu durumda “açık havada-adf”
- ADF uygulamanızda kimlik doğrulama gerektirmeyen ek genel URL'ler varsa bunları "publicUrls" dizisine ekleyin
- ADF uygulamasının Kimlik Hizmetini kullanarak kimlik doğrulaması yapabilmesi için "authType" özelliğinin "OAUTH" olması gerekir. SSO'yu geçici olarak kapatmak istiyorsanız bu değeri " ECM " olarak ayarlayabilirsiniz.
- ACS ve APS için SSO'yu etkinleştirdikten sonra ADF uygulamanızın da SSO için yapılandırılması gerekir. SSO'yu ADF'de kapalı, ancak ACS/APS'de açık bırakırsanız ADF uygulaması aracılığıyla oturum açmaya çalıştığınızda kimlik doğrulama hataları alırsınız.
Bilinmesi Gereken Diğer Şeyler
Kimlik Hizmetini tam olarak kurup yapılandırırken birkaç yararlı bilgi topladık:
- Alfresco belgelerinin söylediklerine rağmen, yukarıdakilerin çalışması için SAML modülünü kurmanıza gerek YOKTUR. Neden? Share, APS ve ADF, Identity Service ile iletişim kurmak için OIDC'yi kullanıyor ve bu hizmet daha sonra OIDC aracılığıyla Okta'ya yetki veriyor. Bu kurulumun hiçbir noktasında SAML kullanılmaz (tabii ki, IdP'niz OIDC'yi desteklemiyorsa muhtemelen SAML'yi kurmanız gerekecektir, ancak yine de istemcilerin OIDC ve ardından Identity aracılığıyla Kimlik Hizmeti ile konuşmasını sağlayabilmelisiniz. IdP'ye SAML aracılığıyla hizmet verildiğinden teorik olarak Alfresco için SAML modülüne ihtiyaç duyulmayabilir)
- Yukarıdaki kurulumda Kimlik Hizmeti için yalnızca bir Okta uygulaması oluşturulmuştur. Bunu yaparken, Okta'daki bu Uygulama aracılığıyla yalnızca tek bir istemcinin "açıkta kalmasını" sağlayabiliriz. Dolayısıyla, kullanıcılarınızın bu istemcilere doğrudan Okta kontrol panelinden erişebilmelerini istiyorsanız, hangi istemciyi (ve dolayısıyla hangi yönlendirme URL'sini) kullanacağınızı seçmeniz gerekir. Her istemcinin Okta'da kullanılabilir olmasını istiyorsanız bunları ayrı uygulamalar olarak ayarlamanız gerekir; bu, bu uygulamaların her biri için IS'de IdP girişlerini de ayarlamanız gerektiği anlamına gelir
- Yukarıda anlatılan kurulumda Kimlik Hizmetini Apache httpd ile önleyebiliriz. Bu, Okta'da Kimlik Hizmeti uygulamasını ayarlarken bağlantı noktası numaralarının kullanımını (ve söz konusu bağlantı noktası numaraları için güvenlik duvarında delik açılmasını) ortadan kaldırır. Bu özel kurulumun ayrıntılarını vermeyeceğiz, ancak Apache'yi Kimlik Hizmeti JBoss sunucusuna bağlamak için AJP'yi kullanabilirsiniz. Ayrıca Kimlik Hizmetinin “standalone.xml” dosyasında AJP'yi doğrudan “” altına aşağıdaki satırı ekleyerek etkinleştirmemiz gerekir.
<ajp-listener name="ajp" socket-binding="ajp"></ajp-listener>
Kopyala
Kapanış
Alfresco Kimlik Hizmeti, Alfresco tabanlı uygulamalarınızda SSO'yu etkinleştirmeye yönelik önemli bir bileşendir.
Kimlik Hizmetini kurmak ve çalıştırmak inanılmaz derecede karmaşık değildir, ancak Alfresco'nun ürün belgelerinin mevcut durumuyla olması gerekenden daha zorlu ve kafa karıştırıcıdır.
Umarız bu makale, Kimlik Hizmetinin OIDC kullanan Okta gibi bir IdP'ye kimlik aracısı olarak çalışmasını sağlamak için tam olarak neyin gerekli olduğunu açıklamaktadır.
Alfresco Kimlik Hizmeti hakkında daha fazla bilgi edinmek istiyorsanız ya da hizmeti çalışır duruma getirme konusunda takılıp kalırsanız bize bir satır bırakmaktan çekinmeyin!