* Ortamın ayrıntıları aşağıda açıklanmıştır.temel kimlik doğrulama sorununu rapor yöneticisine nasıl iletilir url
Raporlama hizmetleri için bir kimlik doğrulama çözümü oluşturmaya çalışıyorum.
Çevrimiçi müşteri, mevcut müşteri veritabanımızı kullanarak doğrulanmalı, yerel yönetim kullanıcıları ise basit, Temel, kimlik doğrulaması kullanabilir.
CodePlex örnekler ve ben o şekildepublic void GetUserInfo(out IIdentity userIdentity, out IntPtr userId)
{
if (HttpContext.Current != null && HttpContext.Current.User != null)
userIdentity = HttpContext.Current.User.Identity;
else
{
HttpContext.Current.Response
.AddHeader("WWW-Authenticate", "Basic realm=\"ReportServer\"");
HttpContext.Current.Response.Status = "401 Unauthorized";
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
userIdentity = new GenericIdentity("not authorized");
}
userId = IntPtr.Zero;
}
aşağıdaki gibi temel mücadeledir sorunu kullanma şeklinizi kullanarak SSRS
bir güvenlik uzantısı yapmış
zaman LogonUser
yöntemiyle geçmemiş bir kullanıcı (ör. doğrudan URL erişimi, teklifler uygulama dağıtımı, normal kullanıcı uygulamaları değil) Temel oturum açma/şifre açılır penceresine meydan okunuyor. /ReportServer
URL'yi erişirken Bu iyi çalışır
void IHttpModule.Init(HttpApplication context)
{
context.AuthenticateRequest += CustomAuthenticateRequest;
}
void CustomAuthenticateRequest(object sender, EventArgs e)
{
var app = sender as HttpApplication;
if (app == null) return;
var basicAuth = app.Context.Request.Headers["Authorization"];
if (!string.IsNullOrEmpty(basicAuth))
{
var loginpass = Encoding.Default.GetString(
Convert.FromBase64String(basicAuth.Replace("Basic ", ""))).Split(':');
if (loginpass.Length == 2
&& loginpass[0] == adminUser
&& loginpass[1] == adminPass)
{
app.Context.User = new GenericPrincipal(
new GenericIdentity(adminUser), null);
}
}
}
şöyle Bunu desteklemek için bir HttpModule'ü yapılmış, ben meydan olsun,/kodlanmış yönetici girişi yazın geçmek ve oturum almak. Ben geçebilir nasıl bilmek istiyorum
Yetkisiz: istek 401 HTTP durum başarısız oldu: Ben
System.NET.WebException olsun
/Reports
erişirkensorundur giriş/çıkış tüm yol aşağı
/Reports
Raporlama Servi ile birlikte SqlServer 2012 çalıştırıyorum ces 2012, ama iç işleyişi ben
var benim HttpModule için Codegroup FullTrustrsreportserver.config
günüile ben
rssrvpolicy.config
günü<authentication mode="None" /> <identity impersonate="false" />, and the entry for the httpmodule
var benim
web.config
yılındaSSRS 2008-R2
den değişmemiştir
<AuthenticationTypes> <Custom/> </AuthenticationTypes>, and the entry for the security extension
Henüz yapılandırılmamış
SSL
ve bağlamaları ir default
Yine de bir cevabı çok isterim, ancak şimdilik bir geçici çözüm yaptım. HttpModule'im üzerinde yalnızca yerel makine erişimi aracılığıyla rapor yöneticisine erişime izin veriyorum. Yerel makineden erişirken, bağlam kullanıcısını sadece yönetici olarak ayarlıyorum. Oldukça çirkin bir çözüm, ama yine de bir çözüm. –
ReportManager, aynı ortak SOAP API'sini kullanarak ReportServer'a konuşur, bu nedenle bir şekilde kendini doğrulamak zorundadır. Aynı modülü ReportManager yapılandırma dosyalarına eklemeniz gerektiğini tahmin ediyorum. Umarım, ReportManager, ReportServer ile konuşmak için aynı kimlik bilgisini veya kimlik bilgilerini kullanır. – user1578107
Özel güvenlik mümkündür. SSRS hizmet seviyesinde Kimlik Doğrulama ve Yetkilendirme yöntemlerini geçersiz kılarsanız, ssrs yöneticisi ile işlevlerin dahil edilmesi ve varsayılan oturum açma sayfası sağlanması meselesidir. –