Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Winforms访问ACS Azure_Winforms_Azure_Acs - Fatal编程技术网

从Winforms访问ACS Azure

从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

我有一个需要ACSv2身份验证的Azure webrole,我想从winforms应用程序访问它。我的许多客户端都使用Windows XP,因此我无法使用WIF(在Windows XP上不可用)。在这种情况下,为我的web请求获取身份验证令牌的最佳方法是什么?

对于桌面应用程序,您可以执行以下操作:

  • 从您的ACS命名空间获取标识提供程序列表
  • 在WebBrowser控件中显示这些
  • 用户登录后,从WebBrowser控件获取令牌并对其进行解析
  • 这与您希望在Windows Phone应用程序中使用ACS时类似。我建议你看看这篇博文:。下面是用户通过WebBrowser控件(在WP7上)登录后解析令牌的示例代码:


    对于桌面应用程序,您可以执行以下操作:

  • 从您的ACS命名空间获取标识提供程序列表
  • 在WebBrowser控件中显示这些
  • 用户登录后,从WebBrowser控件获取令牌并对其进行解析
  • 这与您希望在Windows Phone应用程序中使用ACS时类似。我建议你看看这篇博文:。下面是用户通过WebBrowser控件(在WP7上)登录后解析令牌的示例代码:


    我想将此标记为已回答。
    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 
                        };