从Winforms访问ACS Azure
我有一个需要ACSv2身份验证的Azure webrole,我想从winforms应用程序访问它。我的许多客户端都使用Windows XP,因此我无法使用WIF(在Windows XP上不可用)。在这种情况下,为我的web请求获取身份验证令牌的最佳方法是什么?对于桌面应用程序,您可以执行以下操作:从Winforms访问ACS Azure,winforms,azure,acs,Winforms,Azure,Acs,我有一个需要ACSv2身份验证的Azure webrole,我想从winforms应用程序访问它。我的许多客户端都使用Windows XP,因此我无法使用WIF(在Windows XP上不可用)。在这种情况下,为我的web请求获取身份验证令牌的最佳方法是什么?对于桌面应用程序,您可以执行以下操作: 从您的ACS命名空间获取标识提供程序列表 在WebBrowser控件中显示这些 用户登录后,从WebBrowser控件获取令牌并对其进行解析 这与您希望在Windows Phone应用程序中使用ACS
对于桌面应用程序,您可以执行以下操作:
我想将此标记为已回答。
OnAuthenticateRequest
事件处理程序中的ValidateRequest
方法工作正常,但向身份验证管理器请求使用创建的ClaimsPrincipal
进行身份验证的请求失败。主体不是身份验证,整个表演到此为止。我想这是一个配置问题,但我无法确定故障的来源。好的。我已经让它工作了。我的问题(我真的不明白)是我在发送web请求http://localhost/contacts/Directory
如示例中所示,正在为该url触发一次身份验证后回调(对于http://localhost/contacts/Directory/
没有。我在Url中添加了一个斜杠,测试现在可以运行了。要将其作为winforms应用程序实现,我们必须更改HttpUtility(用于Url编码),标记存储的位置,并使用web浏览器的ObjectForScripting
属性来实现通知。我想将此标记为已回答。OnAuthenticateRequest事件处理程序中的ValidateRequest
方法工作正常,但对身份验证管理器的身份验证请求代码>与创建的ClaimsPrincipal
失败。主体不是身份验证,整个节目到此为止。我想这是一个配置问题,但我无法确定失败的原因。好的。我已经成功了。我的问题(我真的不明白)是我在发送网络请求http://localhost/contacts/Directory
如示例中所示,正在为该url触发一次身份验证后回调(对于http://localhost/contacts/Directory/
没有。我在Url中添加了一个斜杠,测试现在可以运行了。要将其作为winforms应用程序实现,我们必须更改HttpUtility(用于Url编码),标记存储的位置,并使用web浏览器的ObjectForScripting
属性实现通知。
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
};