2016-03-22 40 views
1

Birden çok ServerMethods sınıfıyla bir Datasnap sunucusunda çalışıyorum. Bunlar daha sonra normal olarak TDSHTTPService üzerinden HTTP/S vb. Şu anda her hizmet alanına/içeriğe/bölgeye uygun ayrı bir kimlik doğrulaması uygulamaya çalışıyorum. Bu, kullanılan kimlik doğrulama kontrolünü değiştirmek için Datasnap TDSAuthenticationManager OnUserAuthenticate olayındaki "Bağlam" parametresinin kullanılması mümkün gibi görünmektedir. Ancak sorunlarla çalıştırıyorum:Delphi 10 HTTP üzerinden Seattle Veri Aktarımı: TDSAuthenticationManager.OnUserAuthenticate?

1) için "datasnaptest" "DataSnap" istemci tarafı TSQLConnection.Driver.DatasnapContext Değişti ve karşılık gelen sunucu tarafında değişti: denedim ne

TDSHTTPService.DSContext "datasnap /" dan "datasnaptest /" ye. Başarılı bağlantı oluşturmaya çalışırken, OnUserAuthenticate olayında "Bağlam" parametresi boş. Sonuç olarak aşağıdakileri denedim:

2) İstemci tarafı TSQLConnection.Driver.DatasnapContext, "datasnap" öğesinden, ör. "datasnap/test", ve ilgili sunucu tarafı TDSHTTPService.DSContext "datasnap /" dan "datasnap/test /" olarak değiştirildi. Daha sonra bağlanmayı denemek, 'HTTP/1.1 404 Beklenen veri noktasını bağlamında istek/veri/test/tünel' ile başarısız olur.

) TSQLConnection.Driver.DatasnapContext geri alındı ​​ve daha sonra " "" test" istemci tarafı TSQLConnection.Driver.URLPath değiştirildi ve buna uygun olarak '/ test/DataSnap' için sunucu tarafı TDSHTTPService.DSContext değiştirildi. Daha sonra bağlanmak için attepmting 'istek/test/datasnap/tünelde' HTTP/1.1 404 Beklenen verinoktası bağlamı ile başarısız olur. Kısacası

: İnsan nasıl doğru farklı kimlik denetimi yönetmek olmayan bir Delphi 10 Seattle DataSnap sunucusunda (farklı/çoklu sunucu sınıfları ile ilgili ve bu nedenle, HTTP farklı URL'ler/Diyarlar'da altında maruz)?

Daha İleri arka planı: Biz/birleştirmeye yeni stil DataSnap çerçevesinde modernize etmek istiyorum Çeşitli uygulama sunucuları ve web hizmetleri/arayüzleri (Webbroker/SABUN ve eski okul DataSnap) var.

cevap

0

'VeriNap' içeriğini değiştiremezsiniz (veya değiştirmemelisiniz). OnUserAuthenticate olay işleyicisine bağlam parametresinin bu şekilde kullanılmasının gerekmediği olabilir.

Ancak:

sadece Nitelikler Özel'i kullanarak onsuz ince ve Yetkili ve Reddedilen Roller birlikte alabilirsiniz geliyor bana.

Bu kimlik doğrulama ve yetkilendirme ilgilidir sürece doğru yolda alırsınız özellikle DataSnap in Action 2 - DataSnap Server Security Bob Swart en öğretici videolar (ve whitepaper'lar) göz at.

+0

Yardım etme girişiminiz için teşekkür ederiz. Bununla birlikte, temel sorunum, bağlamın (değiştirilmiş veya değil) OnUserAuthenticate() yöntemine geçirilmemesidir. Değer her zaman boş. Bu bana bir böcek gibi geliyor. Kullanılmak istenmiyorsa neden parametreyi aldınız? Daha sonra, sitenin farklı alanlarının farklı kimlik doğrulama alanları/bağlamlarına karşılık geldiğini unutmayın, bu yüzden bağlam olmadan sitenizdeki olası tüm alan/bağlamlara karşı kullanıcı/geçiş kontrollerini incelemeye başvurmalısınız. Açıkça arzu edilmez. –

+0

İçerik değişkeni boşsa (kendi uygulamalarında kontrol etmiyorum/kullanmıyorum), bunun EMBT tarafından tamamlanmamış bir uygulama olduğunu düşünüyorum ve Quality Portal hakkında bir hata raporu göndermelisiniz. – nolaspeaker