银光应用中的 Pentaho 身份验证方法。
Pentaho Authentication Method in Silver light Application.
我想将 Pentaho 与 Silverlight 集成 platform.For 身份验证,有用户控制台的登录页面。我不想使用上面的登录页面登录,我想在后面的代码中登录。
我尝试了基本身份验证,但在新版本中它不起作用。
string[] parts = System.Text.RegularExpressions.Regex.Split(ae.Result, "/");
String data = "userid=" + App.UserName + "&password=" + App.Password;
WebClient webClient = new System.Net.WebClient();
Uri uri = new Uri("http://localhost:8080/pentaho/Home?" + data);
webClient.Headers["Content-Type"] = "application/x-www-form-urlencoded";
webClient.Encoding = Encoding.UTF8;
App.WindowManager.ConsoleWrite(uri.ToString());
webClient.UploadStringAsync(uri, "POST", "");
但它适用于以前版本的 Pentaho。我知道 Pentaho 中几乎没有其他可用的方法。但它应该能够在 Silverlight 应用程序中执行。
您知道在 Silverlight 应用程序中执行此操作的任何其他解决方案吗?
提前致谢!!!
在以前的版本中,我们可以在调用 prpt、xaction 或 Analyzer 时将 userid=admin&password=password 作为 URL 的一部分传递。
在 5.0 中,我们只能通过 URL 对主页进行身份验证。
尝试以下方法启用它。
i) 停止您的 Bi 服务器。
ii) 打开 applicationContext-spring-security.xml 并查找 filterChainProxy bean。
iii) 注释 bean 中的现有值部分并添加下面提供的新值部分。
<value>
<![CDATA[CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/api/repos/dashboards/print=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,preAuthenticatedSecurityFilter,httpSessionReuseDetectionFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
/webservices/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
/api/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,requestParameterProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
/plugin/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,requestParameterProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
/**=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,httpSessionReuseDetectionFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor]]>
</value>
iv) 重新启动您的服务器,您应该能够在 url 中使用用户凭据调用报告或 xaction。
v) 使用这个测试 URL http://localhost:8080/pentaho/api/repos/:public:Steel%20Wheels:Buyer%20Report%20%28sparkline%20report%29.prpt/viewer?userid=admin&password=password
使用查询字符串方法进行身份验证是一种不安全的方法,因此我找到了使用基本身份验证方法的解决方案。
WebClient webClient = new System.Net.WebClient();
Uri uri = new Uri("http://serverDomain:8080/pentaho/Home");
//Give user name and password here
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("username:password");
var encodedString = System.Convert.ToBase64String(plainTextBytes);
webClient.Headers["Authorization"] = "Basic " + encodedString;
webClient.Encoding = Encoding.UTF8;
App.WindowManager.ConsoleWrite(uri.ToString());
webClient.UploadStringAsync(uri, "POST", "");
我想将 Pentaho 与 Silverlight 集成 platform.For 身份验证,有用户控制台的登录页面。我不想使用上面的登录页面登录,我想在后面的代码中登录。
我尝试了基本身份验证,但在新版本中它不起作用。
string[] parts = System.Text.RegularExpressions.Regex.Split(ae.Result, "/");
String data = "userid=" + App.UserName + "&password=" + App.Password;
WebClient webClient = new System.Net.WebClient();
Uri uri = new Uri("http://localhost:8080/pentaho/Home?" + data);
webClient.Headers["Content-Type"] = "application/x-www-form-urlencoded";
webClient.Encoding = Encoding.UTF8;
App.WindowManager.ConsoleWrite(uri.ToString());
webClient.UploadStringAsync(uri, "POST", "");
但它适用于以前版本的 Pentaho。我知道 Pentaho 中几乎没有其他可用的方法。但它应该能够在 Silverlight 应用程序中执行。 您知道在 Silverlight 应用程序中执行此操作的任何其他解决方案吗?
提前致谢!!!
在以前的版本中,我们可以在调用 prpt、xaction 或 Analyzer 时将 userid=admin&password=password 作为 URL 的一部分传递。
在 5.0 中,我们只能通过 URL 对主页进行身份验证。
尝试以下方法启用它。
i) 停止您的 Bi 服务器。
ii) 打开 applicationContext-spring-security.xml 并查找 filterChainProxy bean。
iii) 注释 bean 中的现有值部分并添加下面提供的新值部分。
<value>
<![CDATA[CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/api/repos/dashboards/print=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,preAuthenticatedSecurityFilter,httpSessionReuseDetectionFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
/webservices/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
/api/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,requestParameterProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
/plugin/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,requestParameterProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
/**=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,httpSessionReuseDetectionFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor]]>
</value>
iv) 重新启动您的服务器,您应该能够在 url 中使用用户凭据调用报告或 xaction。
v) 使用这个测试 URL http://localhost:8080/pentaho/api/repos/:public:Steel%20Wheels:Buyer%20Report%20%28sparkline%20report%29.prpt/viewer?userid=admin&password=password
使用查询字符串方法进行身份验证是一种不安全的方法,因此我找到了使用基本身份验证方法的解决方案。
WebClient webClient = new System.Net.WebClient();
Uri uri = new Uri("http://serverDomain:8080/pentaho/Home");
//Give user name and password here
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("username:password");
var encodedString = System.Convert.ToBase64String(plainTextBytes);
webClient.Headers["Authorization"] = "Basic " + encodedString;
webClient.Encoding = Encoding.UTF8;
App.WindowManager.ConsoleWrite(uri.ToString());
webClient.UploadStringAsync(uri, "POST", "");