Kullanıcı Yetkilerini Paylaşma ( GEODI → APP)


Geodi Feed API - Besleme Yöntemi (APP → GEODI ) veya Geodi Feed API - Uygulama Servisleri ile Entegrasyon Yöntemi ( GEODI → APP) yöntemlerinden biri ile besleme yapan web uygulaması iseniz ihtiyaç halinde yetki/rol bilgilerini paylaşmak için bu servisi gerçekleyebilirsiniz

Açıklama

Opsiyonel bir servistir. Gerçeklenmesi zorunlu değildir. FeedApi için sağlanan Permission tanımları LDAP grup/kullanıcı Sid değerleri ise gerçeklenmesi gerekmez.
Uygulama kendine ait rol/tanımlar göndermişse  gereklidir.

Sadece GEODI/Settings/RoleProvider altına tanımlanmış adresler için istek yapılır. Sadece bu adrese erişebilen bir sistem yöneticisi bu tanımı ekleyebilir. Bu klasörde örnek içerikler bulunmaktadır.

Eğer FeedApi için özel yetkilendirme kullanıyorsanız size GEODI Token sağlayan sistem yöneticisine Role/Yetki servisinizin adresini vererek buraya tanımlanmasını isteyiniz.

Aynı parametreleri alan ve aynı nesneyi dönen bir .net soap api hazırlanmışsa metod üzerine [ScriptMethod(ResponseFormat = ResponseFormat.Json)] attribute eklenmelidir.

İstek

[ServiceURL]?m=GetRoles&user={username}

ServiceURL içerisine {user} veya {username} ifadeleri kullanılabilir.

{user}, {username} ifadeleri kullanılmasa dahi Http Header içeriğinde request-user ve request-username bilgileri iletilir.

  • {user} userbilgisi GEODI'ye giriş yapan kullanıcının benzersiz adıdır. InvariantCulture ile küçük harfe çevrilmiştir. Kullanıcının hangi yolla giriş yaptığı bilgisinide içerir.
    • Örnekler
      • ldap:domain\user.name
      • geodi:geodiadmin
      • geodi:guest
      • facebook:id
      • uygulamaniz:user.id 
        • GEODI birden fazla kullanıcı doğrulayıcı kullanabilir. Bu tür bir istek uygulamanız Oauth, Oauth2 destekliyorsa ve GEODI'de gerekli tanımlar yapılmışsa veya GEODI üzerinde tanımlı bir ILoginProvider gerçeklemesi varsa yapılabilir. Böyle bir istek gelmesi durumunda doğrulamanın sizin uygulamanız tarafından yapıldığını kabul edebilirsiniz.
    • Tanımadığınız kullanıcılar için boş liste veya boş içerik dönebilirsiniz.
  • {username} sadece kullanıcı adı getirir. LDAP kullanıcı için domain bilgisi getirmez.
  • ServiceURL tanımına istediğiniz ek parametreleri yazarak güvenliği artırabilir, GEODI üzerindeki tanım ayar dosyasından ek Header iletilmesini isteyebilirsiniz. 
HttpMethodGET
Beklenen Hatalar

401 Unauthorized access / Access denied

403 Forbidden

511 Network Authentication Required

Örnek GEODI ayar dosyası 
{
	DisplayName:"Sample Role Provider",
	__type: "Factory.ActionFactory:ServerBasedRoleProvider",
	ServiceURL: "http(s)://myhost/GetRoleService.ashx?user={user}&username={username}",
	GEODIRequestHeader:"GEODI_Request",
	ActionTargets: "*"
}
Beklenen Sonuç
 {
	Roles: []
 }
  • Roles (string array) : iletilen kullanıcıya ait roller/detay yetkilerdir. Bu rollerin biri için Permit tanımı bulunan tüm dokümanlara yetki kazanılır.


veya

 Rol1,Rol2,group:GeodiGroupName/ID,....

veya 

GEODI 6.1.0.21248 ve üzeri için kuralda iletilebilir.

 {
	Roles: [],
	OnlyDenyCheck:[],
	Conditions:[],
	Groups:[]
 }
  • Roles (string array) : iletilen kullanıcıya ait roller/detay yetkilerdir. Bu rollerin biri için Permit tanımı bulunan tüm dokümanlara yetki kazanılır. Deny ile yasaklanmış tüm dokümanlar kullanıcı için yasaklanır. Bu kullanım yetersiz kalmışsa Conditions kullanılabilir. Roles tanımı kural içindeki ifadeleri içermesi durumunda Roles tanımından alınacak yetki kuralı ezecektir.
  • OnlyDenyCheck (string array): İletilen roller için Permit tanımlarına bakılmaz sadece Deny ile iletilen yasaklarda kontrol edilir. Yasak tanımı bulunursa doküman kullanıcıya gösterilmez. 
  • Conditions (string array) : And, Or ve - kullanarak kurallar oluşturulabilir.  parantez içerisinde belirtilecek rol listeleri en az birine sahipse anlamında kullanılır. Tek role de olsa parantezler kullanılmalıdır.
    • Liste içerisinde ayraç virgül(,) olarak kullanılmalı, Rol tanımında yer almayan boşluk karakteri kullanılmamalıdır.
    • Listede bir rol doküman için Deny olarak iletilmişse o doküman için liste false kabul edilir.
    • Array içinde iletilecek birden fazla kural or ile bir araya getirilerek kullanılır 
    • Örnekler
      • (Rol1,Rol2) and (Cat1,Cat2)  : Permit değeri Rol1 veya Rol2 içeren ve aynı zamanda Cat1 veya Cat2 içeren dokümanları görebilir.
      • ((Rol1,Rol2) and (Cat1,Cat2)) or (AllPublic)  : Permit değeri Rol1 veya Rol2 içeren ve aynı zamanda Cat1 veya Cat2 içeren dokümanları veya AllPublic içeren tüm dokümanları görebilir.
      • (Rol1,Rol2) and -(Cat1,Cat2)  : Permit değeri Rol1 veya Rol2 içeren ve aynı zamanda Cat1 veya Cat2 içermeyen dokümanları görebilir.
        • Dikkat : en az 1 tane - kullanılmamış grup kullanılması tavsiye edilir. GEODI tüm rolleri birlikte değerlendirir. -(Cat1) ifadesi başka bir uygulamadan gelen rolleride kapsar.
  • Groups (string array) : GEODI 6.1.0.24366 ve üzerinde kullanılabilir. Kullanıcının bir GEODI grubuna dahil olduğunu gösterir. Diğer özellikler sadece doküman görme yetkisini yönetirken Bu özellik ile düzenleme, Not ekleme, Kaynak/Enumerator görme gibi GEODI üzerinde tanımlı tüm yetkiler yönetilebilir.
Örnekler
//Request : [ServiceURL]?m=GetRoles&user=ldap:domain\user.name
 {
	Roles: [ 'S-151...','Yönetici','Doküman1']
 }
//Request : [ServiceURL]?m=GetRoles&user=ldap:domain\user.name
S-151...,Yönetici,Doküman1

GEODI 6.1.0.21248 ve üzeri için kural Örneği

//Request : [ServiceURL]?m=GetRoles&user=ldap:domain\user.name
 {
	Roles: [ 'AllPublic'],
	OnlyDenyCheck : [ 'CantSeeIfSecret']
	Conditions: [ '(Rol1,Rol2) and (Cat1,Cat2) and -(T1)'],
 }
//Bu kullnaıcı
//Permit değeri AllPublic  içeren tüm dokümanları görür. Deny AllPublic içeren dokümanları göremez. Bu sonucu Condition tanımı değiştiremez.
//Deny tanımı CantSeeIfSecret içeren dokümanları göremez. Bu sonucu Condition veya Roles tanımı değiştiremez.
//Permit değeri  Rol1 veya Rol2 içeren, aynı zamanda Cat1 veya Cat2 den birini içeren ve T1 rolünü içermeyen dokümanları görebilir.
//// Dikkat : en az 1 tane - kullanılmamış grup kullanılması tavsiye edilir. GEODI tüm rolleri birlikte değerlendirir. -(T1) ifadesi başka bir uygulamadan gelen rolleride kapsar.

Örnek Uygulama