1
我有一个Azure卷轴需要ACSv2身份验证,我想从winforms应用程序访问。我的许多客户使用Windows XP,因此我无法使用WIF(Windows XP上不可用)。在这种情况下,为我的Web请求获取身份验证令牌的最佳方式是什么?从Winforms访问ACS Azure
我有一个Azure卷轴需要ACSv2身份验证,我想从winforms应用程序访问。我的许多客户使用Windows XP,因此我无法使用WIF(Windows XP上不可用)。在这种情况下,为我的Web请求获取身份验证令牌的最佳方式是什么?从Winforms访问ACS Azure
对于桌面应用程序,你可以做到以下几点:
这是类似当您要在Windows Phone应用程序中使用ACS时。我建议你看看这篇博文:Azure ACS on Windows Phone 7。以下是在用户通过WebBrowser控件(在WP7上)登录后解析令牌的示例代码:
private void SignInWebBrowserControl_ScriptNotify(object sender, NotifyEventArgs e)
{
var acsResponse = ACSResponse.FromJSON(e.Value);
RequestSecurityTokenResponse rstr = null;
Exception exception = null;
try
{
string binaryToken = HttpUtility.HtmlDecode(acsResponse.securityToken);
string tokenText = RequestSecurityTokenResponseDeserializer.ProcessBinaryToken(binaryToken);
DateTime expiration = DateTime.Now + TimeSpan.FromSeconds(acsResponse.expires – acsResponse.created);
rstr = new RequestSecurityTokenResponse
{
Expiration = expiration,
TokenString = tokenText,
TokenType = acsResponse.tokenType
};
我想将其标记为已回答。 “OnAuthenticateRequest”事件处理程序中的“ValidateRequest”方法正常工作,但对身份验证管理器向创建的“ClaimsPrincipal”发出的“Authenticate”请求失败。校长不是身份验证,整个节目都停在那里。我想这是一个配置问题,但我无法确定失败的根源。 – 2013-02-19 09:32:53
好的。我已经得到这个工作。我的问题(我真的不明白这一点)是,我正在发送Web请求'http:// localhost/contacts/Directory',就像在示例中一样,后验证回调被触发,一次为该URL (http:// localhost/contacts/Directory /',但是没有添加斜杠),并且测试现在可以正常工作 – 2013-02-19 14:27:10
要实现这个作为winforms应用程序,我们必须更改HttpUtility(用于URL编码),令牌存储的位置以及使用Web浏览器的ObjectForScripting属性来实现通知。 – 2013-02-19 14:33:15