Hi,
I am testing this issue for you. Firstly, I will need to build one repro
environment. I list it below and please feel free to correct me if any of
them is not the same to yours.
one test boxes: A windows 2003 with IIS 6.0 worker process mode & Analysis
service
1. create two local user accounts (in the users group by default): uk_user,
us_user
enable asp and asp.net in the IIS6.0
2. create one web site in box A
3. configure the web site only using Basic authentication.
4. create two virtual directory
uk
only set the anonymous access for this virtual directory and grant the
account to the anonymous access: uk_user
us
only set the anonymous access for this virtual directory and grant the
account to the anonymous access: us_user
5. place the msolap.asp file in the two virtual directory respectively.
6. create one logon page as below:
//--------------
<%@ Import Namespace="System.Web.Security " %>
<HTML>
<script language="C#" runat="server">
void Login_Click(Object sender, EventArgs E) {
//the logon user crednetial is very simple for the test
// username: us / us
// password:1
if ((UserEmail.Value == "uk") && (UserPass.Value == "1")) {
FormsAuthentication.RedirectFromLoginPage("uk_user", false);
return;
}
if((UserEmail.Value == "us") && (UserPass.Value == "1")) {
FormsAuthentication.RedirectFromLoginPage("us_user", false);
return;
}
//logon failure
Msg.Text = "Please try again";
}
</script>
<body>
<form runat="server" ID="Form1">
<h3>login page</h3>
<table>
<tr>
<td>useremail£º</td>
<td><input id="UserEmail" type="text" runat="server"
NAME="UserEmail"></td>
<td><ASP:RequiredFieldValidator ControlToValidate="UserEmail"
Display="Static" ErrorMessage="*" runat="server"
ID="Requiredfieldvalidator1"
NAME="Requiredfieldvalidator1" /></td>
</tr>
<tr>
<td>password£º</td>
<td><input id="UserPass" type="password" runat="server"
NAME="UserPass"></td>
<td><ASP:RequiredFieldValidator ControlToValidate="UserPass"
Display="Static" ErrorMessage="*" runat="server"
ID="Requiredfieldvalidator2"
NAME="Requiredfieldvalidator2" /></td>
</tr>
</table>
<asp:button text="Logon" OnClick="Login_Click" runat="server"
ID="Button1" NAME="Button1" />
<p>
<asp:Label id="Msg" ForeColor="red" Font-Name="Verdana" Font-Size="10"
runat="server" />
</form>
</P>
</body>
</HTML>
//--------------
7.create one Default.aspx page as below:
//--------------
<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false"
Inherits="webapp1.WebForm1" %>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Default</title>
</head>
<body><p><object classid="clsid:0002E55A-0000-0000-C000-000000000046"
id="PivotTable1" VIEWASTEXT>
<param name="XMLData" value="<xml
xmlns:x="urn:schemas-microsoft-com
ffice:excel">
<x
ivotTable>
<x:OWCVersion>11.0.0.6255 </x:OWCVersion>
<x
isplayScreenTips/>
<x:CubeProvider>msolap.2</x:CubeProvider>
<x:CacheDetails/>
<x:ConnectionString>Provider=MSOLAP.2;Integrated
Security=SSPI;Persist Security Info=True;Data
Source=http://<serverIP>/uk;Initial Catalog=FoodMart 2000;Client Cache
Size=25;Auto Synch Period=10000</x:ConnectionString>
<x
ataMember>Sales</x
ataMember>
<x
ivotView>
<x:IsNotFiltered/>
</x
ivotView>
</x
ivotTable>
</xml>">
<table width='100%' cellpadding='0' cellspacing='0' border='0'
height='8'><tr><td bgColor='#336699' height='25' width='10%'> </td><td
bgColor='#666666'width='85%'><font face='Tahoma' color='white'
size='4'><b> Missing: Microsoft Office Web
Components</b></font></td></tr><tr><td bgColor='#cccccc'
width='15'> </td><td bgColor='#cccccc' width='500px'><br> <font
face='Tahoma' size='2'>This page requires the Microsoft Office Web
Components.<p align='center'> <a
href='//sha-dds-01/Products/Applications/User/Office_System/Office_2003/file
s/owc11/setup.exe'>Click here to install Microsoft Office Web
Components.</a>.</p></font><p><font face='Tahoma' size='2'>This page also
requires Microsoft Internet Explorer 5.01 or higher.</p><p
align='center'><a href='
http://www.microsoft.com/windows/ie/default.htm'>
Click here to install the latest Internet
Explorer</a>.</font><br> </td></tr></table></object>
</p>
</body></html>
//--------------
8. From the default.aspx page, you can see, I specify the
"http://<serverIP>/uk" as the data source of the pivottable; the Sales is
set to the DataMember property.
9. Then in the FoodMart 2000 of Analysis service, I create one security
role for the Sales cube and only permit this role. Add "uk_user" account
into the role, not add "us_user".
My test:
A: In the client, access the web application. In the login page, input
"uk_user" and password "1" to logon which was successful.
Then open a new IE window and input "us_user" and password "1" to logon
which was also successful.
B: Then change the data source of the pivottable control in the
default.aspx from
"http://<serverIP>/uk"
to
"http://<serverIP>/us"
no matter which account I input in the logon.aspx page, the pivottable
always report failure to me.
Conclusion:
This means the Form authentication doesn't touch the AS logon and security
checking.
When we successfully pass the form authentication, the pivottable still
needs to access the Virtual Directory and then access AS.
Pivottable -------------------------------> IIS
-------------------------------> Analysis Service
us vd or uk vd as
the data source
At this time, when the request from pivottable goes to the virtual
directory, since we have configured the Directory security of Virtual
directory to Anonymous (us virtual directory uses the us_user account; uk
virtual directory uses the uk_user account ), the request from Pivottable
will use the corresponding account to access the analysis service and
obtain the data.
This is to say, when we uses http://<serverIP>/UK as the data source, the
pivottable request will use the account "uk_user" to access the AS. And if
we uses http://<serverIP>/US as the data source, account "us_user" will be
used.
So from your reply:
"you'll notice that UK users are not authorized to see US data in my
set-up, but they can achieve to see the data by simply changing the URL in
the connection string."
When they change the URL in the connection string, they will use the
corresponding account to read the data from AS. This is the reason.
For your convenience, I have attached the related web application for you
in the attachment of this post. You can configure the OE to receive the
attachment if OE blocks this attachment.
Please feel free to let me know if you have any further question.
Best Regards,
Wei-Dong Xu
Microsoft Product Support Services
Get Secure! -
www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights.