如何将基本身份验证标头添加到MediaElement的安全URL资源的源请求?

时间:2011-09-26 22:44:17

标签: silverlight basic-authentication mediaelement

在我的Silverlight应用程序中,我使用基本身份验证与我的WCF Web服务进行通信。一切都很好,直到我的MediaElement尝试请求安全URL资源的视频。我得到了身份验证对话框。

理想情况下,我想将UID / PWD包含在MediaElement请求的Authorization标头中,但我不知道如何执行此操作。

如果无法做到这一点,我怎样才能将媒体元素的访问权限仅限于我登录用户的应用程序?

1 个答案:

答案 0 :(得分:2)

我们通过解决方法解决了这个问题......

当我们使用我们的webservices对用户进行身份验证时,我们为会话添加了一个仅服务器端HTTP的cookie。

var creds = string.Format("{0}:{1}", user.Username, user.Password);
var bcreds = System.Text.Encoding.UTF8.GetBytes(creds);
var base64Creds = Convert.ToBase64String(bcreds);

HttpCookie httpCookie = new HttpCookie("Authorization", "Basic " + base64Creds);
httpCookie.HttpOnly = true;
HttpContext.Current.Response.Cookies.Add(httpCookie);

然后我们创建了一个自定义HttpModule来验证此cookie以访问媒体文件。在自定义处理程序中,我们可以确保请求的IP地址与会话匹配,并且请求实际上来自我们的Silverlight应用程序。