İşinizi Güçlendirin: Erişim kontrolü ile AI araçlarını mevcut hizmetinize bağlayın
Kişisel Erişim Jetonları ve Model Bağlam Protokolü (MCP) kullanarak AI araçlarını mevcut hizmetlerinize güvenli bir şekilde bağlayarak işinizi nasıl güçlendireceğinizi öğrenin, tam kaynak kodu ve pratik örnekler ile birlikte.
Erişim kontrolü ile AI araçlarını mevcut hizmetlerinize nasıl bağlayacağınız konusundaki rehbere hoş geldiniz!
Hizmetlerinizi AI araçlarına hazırlamanın yollarını inceleyeceğiz, özellikle LLM (kullanarak Model Context Protocol)) ile entegrasyon ve çeşitli AI ajanları aracılığıyla, erişim kontrol zorluklarını ele alacağız.
Bu rehber aracılığıyla, şunları elde edeceksiniz:
Sorunsuz AI entegrasyonu: AI araçlarını hizmetlerinize nasıl bağlayacağınızı öğrenerek veri ve işlevlerinizi AI ortamlarında kullanılabilir hale getirin
Gelişmiş API güvenliği: API arayüzlerinizi geliştirerek veri ve kullanıcı gizliliğini etkili erişim kontrolü ile koruyun
Kullanıcı için kişiselleştirilmiş AI deneyimi: Kişisel Erişim Jetonları aracılığıyla her kullanıcı için benzersiz AI destekli deneyimler oluşturun
Tam öğretici kaynaklar, TAM DEMO PROJE KAYNAK KODU (FRONTEND, BACKEND ve MCP SUNUCUSU DAHİL) sağlıyor ve hatta sıfırdan AI'ya hazır hizmetler oluşturmanıza yardımcı olacak pratik kılavuzlar sunuyoruz.
İşte bu rehberin işinizi nasıl geliştirebileceği:
Rekabet avantajı: Hizmetinizin teknik yeteneklerini ve kullanıcı deneyimini geliştirerek rekabetçi bir pazarda öne çıkın
Kullanıcı değeri artırma: AI araçları ile ürününüzde daha derin değerler keşfetmelerini sağlayarak kullanıcıların kalıcılığını ve memnuniyetini artırın
Geleceğe hazır hizmetler: AI ekosistemiyle hizmetlerinizi sorunsuz bir şekilde entegre ederek gelecek AI odaklı iş dünyasına hazırlanın ve yenilikçi büyüme yolları açın
Haydi başlayalım!
MCP nedir ve AI araçlarını hizmetinize nasıl bağlar#
MCP (Model Context Protocol) uygulamaların büyük dil modellerine (LLM'ler) nasıl bağlam bilgisi sağlayacağını standardize eden açık, evrensel bir protokoldür.
MCP, AI araçlarının hizmetlerinize erişmesini sağlayan birkaç kilit bileşenden oluşur:
Bu rehberde, sadece MCP Sunucusunun hizmetiniz ve AI araçları arasındaki ana bağlantı noktası olduğunu bilmeniz yeterlidir. LLM'nin kullanması için bir dizi araç sağlamaktan sorumludur ve bu araçlar kendi hizmetlerinizle etkileşimde bulunacaktır. MCP hakkında daha fazla ayrıntı için MCP (Model Context Protocol) nedir ve nasıl çalışır adresine başvurabilirsiniz. Burada sadece MCP Sunucusu üzerine odaklanacağız.
Rol Tabanlı Erişim Kontrolü (RBAC) politikalarını entegre etmiş bir İçerik Yönetim Sistemi (CMS) örneğimizi kullanacağız. Bunun için bir MCP Sunucusu oluşturacağız ve LLM'nin CMS'deki mevcut kullanıcıya ait makale sayısını almasına izin veren get-available-article-count adlı bir araç tanımlayacağız:
Bu, MCP Sunucusunu hizmetinize bağlamanın ana kodudur. Bu araç uygulamasında, hizmetin api/articles uç noktasına bir istek gönderir ve sonucu döndürür.
Ancak, bu yeterli değildir, çünkü hizmetinizin API'si genelde herkese açık olmayabilir. Her uç noktanın erişim kontrolüne ihtiyacı vardır ve farklı kullanıcılar farklı kaynaklara ve verilere erişebilebilir.
Bu nedenle, bir sonraki adımda hizmetinize erişim kontrolünü nasıl ekleyeceğimizi tartışacağız.
MCP sunucusu için erişim kontrolü nasıl uygulanır#
AI araçları aracılığıyla sisteminize erişen kullanıcıların, sisteminizi doğrudan kullanabilecek aynı kişiler olduğunu anlamak önemlidir - MCP Sunucusu, AI araçlarıyla etkileşime girdiklerinde onların temsilcisi rolü oynar.
Dolayısıyla kullanıcılar, AI araçları aracılığıyla hizmetlerinize eriştiğinde iki pratik erişim kontrol zorluğu ortaya çıkar:
MCP Sunucusu, sisteminize bir kullanıcı gibi nasıl giriş yapar?
Sisteminizi yalnızca MCP Sunucusu'na uyum sağlamak için tüm erişim kontrol mekanizmasını yeniden tasarlamalı mı? Bu, önemli bir maliyet ve çaba olacaktır, özellikle orijinal sisteminizin zaten kendi kimlik doğrulama mekanizmasına sahip olması durumunda.
Bu sorunları çözmenin anahtarı:
MCP Sunucusu'nun, kullanıcı kimlik bilgileri ve etkileşimli oturum açma kullanmadan, hizmetinizden erişim izni almasına kullanıcıların nasıl izin vereceği nedir?
Eğer bu sorunu çözebilirseniz, MCP Sunucusu üzerinden doğrudan hizmetinizle etkileşimde bulunabilir ve hizmetiniz, kullanıcılar için daha önce tasarlanmış erişim kontrol mekanizmasını kullanmaya devam edebilir, MCP Sunucusu için yeni bir sistem tasarlamanıza gerek kalmadan!
Ama bu mümkün mü?
Tabii ki mümkün! Bu sorunu mükemmel bir şekilde Kişisel Erişim Jetonları kullanarak çözebilirsiniz!
Kişisel erişim jetonları (PAT’lar), kullanıcıların kimlik bilgilerini ve etkileşimli oturum açma kullanmadan erişim jetonu vermesi için güvenli bir yol sağlar. Bu, CI/CD, script veya programatik olarak kaynaklara erişmesi gereken uygulamalar için yararlıdır.
İş akışı şu şekilde görünür:
Dolayısıyla, sisteminiz Kişisel Erişim Jetonlarını (PAT) desteklediği sürece AI araçları ile mevcut hizmetleriniz arasındaki erişim kontrol zorluklarını yeni kimlik doğrulama mekanizması tasarlamadan mükemmel bir şekilde çözebilir ve kullanıcılarınız için veri güvenliği ve gizlilik korumasını sağlayabilirsiniz.
Şimdi, bunu nasıl pratikte uygulayacağımızı görelim.
CMS örneğimiz, kapsamlı bir kimlik doğrulama ve yetkilendirme çözümü sağlayan popüler bir açık kaynaklı kimlik platformu olan Logto üzerine kuruludur, ancak teknik uygulama bu makalenin odak noktası değildir.
Hizmetiniz için izin ve erişim kontrol politikası tasarlayın#
Erişim kontrolünü uygulamanın ilk adımı, sisteminiz için izinler ve erişim kontrol politikaları tasarlamaktır.
CMS örneğimizde, RBAC (Rol Tabanlı Erişim Kontrolü) temelinde aşağıdaki API uç noktalarını tasarladık ve her bir uç noktanın erişimi için gereken izinleri belirledik:
Uç Nokta
Erişim kontrol mantığı
GET /api/articles
- list:articles iznine sahip herkes, VEYA yazarlar kendi makalelerini görebilir
GET /api/articles/:id
- read:articles iznine sahip herkes, VEYA makalenin yazarı
POST /api/articles
- create:articles iznine sahip herkes
PATCH /api/articles/:id
- update:articles iznine sahip herkes, VEYA makalenin yazarı
DELETE /api/articles/:id
- delete:articles iznine sahip herkes, VEYA makalenin yazarı
PATCH /api/articles/:id/published
- Sadece publish:articles iznine sahip kullanıcılar
Sistemin izin tasarımı şu şekildedir:
İzin
Açıklama
list:articles
Sistemdeki tüm makalelerin listesini görüntüle
read:articles
Herhangi bir makalenin tam içeriğini oku
create:articles
Yeni makaleler oluştur
update:articles
Herhangi bir makaleyi değiştir
delete:articles
Herhangi bir makaleyi sil
publish:articles
Yayın durumu değiştir
Bu izinlere dayanarak, CMS sistemimiz için aşağıdaki rolleri tanımladık:
İzin/Rol
👑 Yönetici
📝 Yayıncı
✍️ Yazar
Açıklama
Tam sistem erişimi ile kapsamlı içerik yönetimi
Tüm makaleleri görüntüleyebilir ve yayın durumunu kontrol edebilir
Sisteme yeni makaleler ekleyebilir
list:articles
✅
✅
❌
read:articles
✅
✅
❌
create:articles
✅
❌
✅
update:articles
✅
❌
❌
delete:articles
✅
❌
❌
publish:articles
✅
✅
❌
Not: Yazarlar, rol izinlerinden bağımsız olarak kendi makaleleri için okuma/güncelleme/silme izinlerine otomatik olarak sahiptirler.
Bir sonraki adımda, sistemimizdeki kullanıcılara roller atayacağız (CMS demo örneğini kullanarak):
Kullanıcı
Rol
Alex
Yönetici
Bob
Yayıncı
Charlie
Yazar
Ve Logto'da, yukarıdaki RBAC uygulamada makalesinde belirtildiği gibi kullanıcılar için roller tanımladık.
Erişim kontrol politikasını hizmet API'sine uygulayın#
CMS örneğimizde kullanıcılar şu şekilde oturum açar:
Dolayısıyla, hizmet API'nize erişim kontrolü uygulamak, 9. adımda erişim jetonunu doğrulayan ve izinleri kontrol eden bir ara yazılım eklemek kadar basittir.
Temel uygulama şu şekildedir (RBAC örneği - backend adresinde tam uygulamayı kontrol edin):
Ve kimlik doğrulama gerektiren API uç noktalarına bu ara yazılımı uygulayın:
Artık CMS sistemimize erişim kontrolü ekledik ve kullanıcılarımıza roller atadık.
Kullanıcılar oturum açtıktan ve CMS API için Erişim Jetonlarını aldıktan sonra, bu jetonu kullanarak CMS API'ye erişebilirler. Erişim Jetonu, kullanıcının izin bilgilerini içerir. Bu, kullanıcı izinlerine dayanarak hangi verilerin döndürüleceğini kontrol etmemizi sağlar.
Bir sonraki adımımız, MCP Sunucusunu Kişisel Erişim Jetonlarını kullanmak için uygulamaktır.
Kişisel Erişim Jetonunun kullanıcıları nasıl temsil ettiği#
Yukarıdaki CMS kimlik doğrulama akışına bakarak, kullanıcılar giriş yaptıktan sonra CMS API için bir Erişim Jetonu alır. Bu Erişim Jetonu, CMS API'ye erişimleri için kimlik bilgileri niteliğindedir.
Kullanıcıların giriş yaptıktan sonra aldığına benzer bir Erişim Jetonu almamız yeterlidir. Ardından, CMS API'sine erişmek için bunu kullanabiliriz.
Kişisel Erişim Jetonları işte burada devreye girer. Bize kullanıcıların giriş yaptıktan sonra genellikle aldığı Erişim Jetonu türünü sağlar.
Yapmamız gerekenler şunlardır:
Bir kullanıcı için bir Kişisel Erişim Jetonu oluşturun
Bu Kişisel Erişim Jetonunu, Kimlik Doğrulama Hizmetinin jeton uç noktası ile değişim jetonu talep etmek için kullanın. Bu, kullanıcıların giriş yaptıktan sonra aldığına benzer bir Erişim Jetonu verir
MCP Sunucu aracımızda CMS API'ye erişmek için bu Erişim Jetonunu kullanın
Bu örnekte, kişisel erişim jetonları ve jeton değişimi desteklediği için gösterim amacıyla Logto'yu kullanıyoruz. Logto kullanmıyorsanız, kişisel erişim jetonu desteğinizi uygulamak için bu yaklaşımı takip edebilirsiniz.
Kullanıcınız için Kişisel Erişim Jetonu oluşturun#
Logto Konsolu > Kullanıcı yönetimi bölümünde, kullanıcı ayrıntıları sayfasından onlar için bir Kişisel Erişim Jetonu oluşturabilirsiniz:
Bir Kişisel Erişim Jetonu oluştururken, gerekli gördüğünüz süresi kadar ayarlayabilirsiniz.
Şimdi kullanıcının Kişisel Erişim Jetonuna sahip olduğumuza göre, bunu MCP Sunucusunda kullanabiliriz.
Öncelikle, Logto'nun Kişisel Erişim Jetonu belgelerini takip ederek, Logto'nun jeton uç noktasından CMS API'ye erişim için bir Erişim Jetonu alacağız. Tam kaynak kodunu kontrol edebilirsiniz burada.
MCP Sunucusunda, exchangeAccessToken fonksiyonundan gelen Erişim Jetonunu CMS API'den veri almak için kullanıyoruz.
Bu şekilde, MCP Sunucusu CMS API'ye erişmek için kullanıcı giriş kimlik bilgilerine ihtiyaç duymaz. Bunun yerine, kullanıcının Kişisel Erişim Jetonunu kullanır.
CMS'imizde, hem Alex hem de Charles her biri birer makale oluşturdu.
Alex, Yönetici rolüne sahip olduğundan, tüm makaleleri görebilir. Charles ise Yazar olarak sadece kendi makalelerini görebilir.
Claude'a mevcut makale sayısını sorduğumuzda, Claude get-available-article-count aracını kullanacak ve iznimizi isteyecek:
MCP'de Alex'in Kişisel Erişim Jetonunu kullandığımızda ve Claude'a mevcut makale sayısını sorduğumuzda, Claude get-available-article-count aracını çağırır ve bize 2 makale olduğunu söyler.
Charles'ın Kişisel Erişim Jetonuna geçip aynı soruyu tekrar sorduğumuzda, Claude bize sadece 1 makale olduğunu söyler.
Harika! Kişisel Erişim Jetonlarını kullanarak CMS API'ye erişip doğru verileri elde etmeyi başardık.
Tam da istediğimiz gibi oldu: her kullanıcı için bir Kişisel Erişim Jetonu oluşturuyoruz ve kullanıcılar kendi tokenları ile MCP Sunucusunu yapılandırdığında, onlar için kişiselleştirilmiş bir AI deneyimi yaratıyoruz.
Bu rehberde, AI araçlarını mevcut hizmetlerinize uygun erişim kontrolünü koruyarak nasıl bağlayacağınızı araştırdık. Bunu, RBAC uygulaması olan bir CMS sistemi kullanarak gösterdik ve Kişisel Erişim Jetonlarının (PAT) kimlik doğrulama zorluklarını nasıl zarifçe çözdüğünü gösterdik.
Bu uygulamanın tam kaynak kodunu içeren RBAC örnek deposu içinde bulabilirsiniz; CMS arka ucu, ön ucu ve MCP sunucusu uygulaması dahil.
MCP sunucunuzu kullanıcılara dağıtırken, Kişisel Erişim Jetonunu yapılandırılabilir hale getirmeyi unutmayın. Bu, her kullanıcının:
MCP sunucusunda kendi PAT'sini yapılandırmasına
Belirli izinlerine dayalı kaynaklara erişmesine
Rol ve erişim seviyelerine yansıyan kişiselleştirilmiş AI deneyimleri elde etmesine olanak tanır
Bu yaklaşım, AI entegrasyonunuzun güvenli olmasını sağlarken, sisteminizdeki izinler ve rol temelinde her kullanıcı için özelleştirilmiş bir deneyim sunar.
Bu AI entegrasyon yolculuğuna çıktığınızda işinizde büyük başarılar dilerim! Hizmetlerinizin bu yeni AI yetenekleriyle gelişip büyümesi dileğiyle! 🚀