SharePoint Online Add-in App-Only Ayrıcalıkları

Merhaba;

Yükseltilmiş ayrıcalıklar (Elevated Privileges), yeni SharePoint ekleti modelinde tam güven (Full Trust) kodlarından farklı olarak işlemektedir. Farm Solution senartolarında Full Trust Code ( FTC) RunWithElevatedPrivileges tanımlaması ile kullanılır ve Farm üzerine dağıtımı sağlanır.

Bu ayrıcalıklar aşağıda sıralayacağımız kurallar dahilinde çalışabilir. Bunlara göz atmak gerekirse ;

  1. AllowAppOnlyPolicyaşağıdaki kurallar ile birlikte çalışabilir.  Bunlar;
    1. Arama (Search), Aramada hedef site On-Prem sunucu ise SharePoint Online desteği eklenerek çalışması sağlandı .
    2. User Profile CSOM işlemlerinde yanlızca Bulk Update işlemlerinde kullanılabilir. Diğer işlemlerde kulanılamaz.
    3. Taxonomy serivislerinin güncellenmesinde kullanılamaz sadece okuma işleminde kullanılabilir.
    4. Bu kuralların çalışması için on-prem sunucunuz üzerinde özel bir sistem hesabı tanımlaması yapılması gerekmektedir.
  2. AllowAppOnlyPolicy, RunWithElevatedPrivileges’e benzer, ancak tam olarak aynı değildir.
    1. AllowAppOnlyPolicy, işlem gerçekleştirmek isteyen izinlere sahip bir kullanıcı adına değil, SharePoint üzerinde çalıştırmaya çalıştığınız uygulamaya verilen izinlere bağlı olarak uygulama kodlarını çalıştırır.
Uri siteUrl = new Uri(ConfigurationManager.AppSettings["MySiteUrl"]);
try
{
//Connect to the give site using App Only token
string realm = TokenHelper.GetRealmFromTargetUrl(siteUrl);
var token = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUrl.Authority, realm).AccessToken;
using (var ctx = TokenHelper.GetClientContextWithAccessToken(siteUrl.ToString(), token))
{
// Perform operations using the app only token access.
}
}
catch (Exception ex)
{
Console.WriteLine("Error in execution: " + ex.Message);
}

 

 

  1. AllowAppOnlyPolicy’yi kullanırsanız sadece sunucu tarafında host edilen eklenti veya uygulamalarda çalıştığını unutmayınız.
  2. AllowAppOnlyPolicy Herhangi bir kullanıcı adına kodu çalıştırmadığından tüm senaryolarınız için uygun olmaya bilir.
  3. Bir servis hesabının SharePoint üzerinde tanımlı olması gereklidir.
    1. Office 365 üzerinde bu hesap için ek bir lisans gerekebilir
    2. SharePoint on-prem üzerinde tek bir hesap üzerinden ilerleyebilir yada her bir uygulama/eklenti için ayrı ayrı hesap açabilirsiniz.
  • Hesaplarınız için her zamanki gibi net ve anlaşılır isimleri verin
  1. Hesaplarınız için Office 365 üzerinden mutlaka token almalısınız
using (ClientContext context = new ClientContext("https://tenancy.sharepoint.com"))
{
// Use default authentication mode
context.AuthenticationMode = ClientAuthenticationMode.Default;
// Specify the credentials for the account that will execute the request
context.Credentials = new SharePointOnlineCredentials("User Name", "Password");
}

Bunun dışında Evelated Permission için kullanabileceğiniz iki opsiyon daha bulunmaktadır. Bunlardan birincisi Oauth diğeri ise Servise Hesabıdır. Oauth AllowAppOnlyPolicy olarak kullanılabilmektedir. Servis hesabının kullanılmasına örnek olarak ise Azure üzerinde bulunan bir Web Job’ını örnek olarak gösterebiliriz.

Yukarıda açıkladığımız kurallar haricinde On-prem ile online arasında Evelated Permission kullanımda sınırlamalar bulunmaktadır. Kodlamalarınızda bu hususları dikkate almanız gereklidir.

Faydalı olması dileği ile

Yanıt Yaz