Silverlight 5 Beta In-Browser Elevated Trust

0 dakikada yazıldı

10119 defa okundu

Düzenle

Silverlight'ın masaüstündeki Elevated Trust özelliği duyurulduğundan
beridir bu konuda çerçevesinde en çok sorulan soru "Acaba tarayıcı
içerisinden de bu haklara sahip olabilir miyiz?" şeklindeydi. Özellikle
AutomationFactory'yi herkes tarayıcıdan da kullanabilmek istiyordu. Tabi
ki bu durum web ortamında uygulamalar için epey tehlikeli olabilir fakat
eğer şirket için bir intranet uygulamasından bahsediyorsak iplleri biraz
daha ele alarak bu tarz işlevsellikleri sağlamak da mümkün.

İşte tam da bu noktada Silverlight 5 Beta ile beraber In-Browser
(Tarayıcı içi) Elevated-Trust özelliği geliyor. Gelin hangi şartlarda
neyin nasıl çalışacağına bir göz atalım.

In-Browser Elevated Trust nasıl ayarlanır?

Her zaman olduğu gibi ilk yapmanız gereken tabi ki uygulamanın
manifestinde Elevated-Trust çalışabilmesi ile ilgili değişiklikleri
yapmak. Bunun için Visual Studio içerisinde projeye sağ tıklayarak
Properties komutuyla ulaştığınız ekranlardaki kontrolleri de
kullanabilirsiniz.

[OutOfBrowserSettings.xml]

  <OutOfBrowserSettings.SecuritySettings>
    <SecuritySettings ElevatedPermissions="Required" />
  </OutOfBrowserSettings.SecuritySettings>

Bu işlemi tamamladıktan sonra basit bir Elevated Trust testi için
aşağıdaki kodu uygulama yerleştirip önce tarayıcı dışında sonra da
tarayıcı içinde kodun çalışıp çalışmadığına göz atalım.

[C#]

            dynamic WScript = AutomationFactory.CreateObject("WScript.Shell");
            WScript.Run(@"C:\Windows\notepad.exe", 1, true);

İlginç bir şekilde göreceksiniz ki kod hem tarayıcı içerisinde hem de
dışında çalışacak. Yani bir anda tarayıcı içerisindeki uygulamamız da
Elevated Trust oldu. Eh olay bu kadar mı? :) Tabi ki değil. Şu anda
büyük ihtimal ile uygulamayı 127.0.0.1 localhost üzerinden
çalıştırdığınız için herşey sorunsuz çalışıyor. Silverlight dosyasının
bir sunucuya atıp remote download yaptığınız anda tarayıcı içerisindeki
Elevated Trust ortadan kalkacaktır. Biraz önce karşılaştığımız durum
aslında biz developerların debug hayatını kolaylaştırmak için yapılmış
bir güzellik :)

[Registry.exe]

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Silverlight\AllowElevatedTrustAppsInBrowser
(DWORD) 0×00000001

Bir uygulamanın tarayıcı içerisinde de Elevated Trust çalışabilmesi için
yukarıdaki Registry kaydının hedef makineden yapılmış olması gerekiyor.
Söz konusu kayıt bir GP ile de uygulanabilir. Bu kadarla bitmiyor,
uygulamanın hedef makinede Trusted Publishers Certificate listesinde
bulunan bir Code Signage Certificate ile imzalanmış olması gerekiyor.

Daha daha?

Registry'de kayıt olarak ekleyebileceğiniz iki ayar daha var aslında.
Bunlardan ilki AllowInstallOfElevatedTrustApps şeklinde. Eğer bu
şekilde bir DWORD'ü 0 değeri ile eklerseniz artık Elevated Turst
uygulamalar kullanıcılar tarafından bilgisayarlarına yüklenemez. Fakat
bu uygulamalar tarayıcı içerisinde Elevated Trust modunda çalışmaya
devam edebilir. İkinci keyword ise
AllowLaunchOfElevatedTrustApps.Tahmin edebileceğiniz gibi bu arkadaş
ise hem tarayıcı içi hem de dışı tüm Elevated Trust'ların deaktif
olmasını sağlayabiliyor. Bu senaryoda kullanıcı bilgisayarına Elevated
Turst uygulama yüklese de uygulama normal modda çalışıyor.

Peki eksik birşey var mı?

Evet :) SL5 Beta ile beraber yeni gelen Window sınıfı sadece
Out-Of-Browser Elevated Trust'ta çalışabiliyor. In-Browser uygulama
Elevated Trust olsa da Window sınıfını kullanma şansı yok.

Son bir ekleme daha... Eğer uygulamanız sadece tarayıcı içerisinde
Elevated Trust çalışsın istiyorsanız ve varsayılan "Install...." context
menüsünün gözükmemesini istiyorsanız bunu projenin OutOfBrowserSettings
özelliklerinden ayarlayabileceğinizi unutmayın ;)

[OutOfBrowserSettings.xml]

<OutOfBrowserSettings ShortName="SilverlightApplication9 Application" 
                      EnableGPUAcceleration="False" 
                      ShowInstallMenuItem="False">
  <OutOfBrowserSettings.Blurb>SilverlightApplication9 
Application on your desktop; at home, at work or on the go.

</OutOfBrowserSettings.Blurb>

  <OutOfBrowserSettings.WindowSettings>
    <WindowSettings Title="SilverlightApplication9 Application" />
  </OutOfBrowserSettings.WindowSettings>
  <OutOfBrowserSettings.SecuritySettings>
    <SecuritySettings ElevatedPermissions="Required" />
  </OutOfBrowserSettings.SecuritySettings>
  <OutOfBrowserSettings.Icons />
</OutOfBrowserSettings>

Hepinize kolay gelsin ;)