【问题标题】:How to implement OAuth 2.0 in ASMX (web-reference)?如何在 ASMX(网络参考)中实现 OAuth 2.0?
【发布时间】:2018-02-12 12:59:50
【问题描述】:

我是实施 OAuth 2.0 的新手。我已经在我的 xamarin 项目中实现了网络参考(ASMX 文件)。现在我需要实现 OAuth 2.0 进行身份验证。但我不确定 ASMX 是否支持 OAuth2.0。我是否需要实现 WCF 而不是 Web 引用 (ASMX) 或者是否可以在 Web 引用 (ASMX) 中实现 OAuth2.0?

【问题讨论】:

    标签: c# wcf xamarin oauth-2.0 asmx


    【解决方案1】:

    一种可能的解决方案是将从授权获取的令牌添加到授权标头。 您的代码可能类似于:

    var redirectURI = Windows.Security.Authentication.Web.WebAuthenticationBroker.GetCurrentApplicationCallbackUri();
    var _authContext = new AuthenticationContext(authority);
    var tokenResult = await _authContext.AcquireTokenAsync(serviceResourceId, clientId, redirectURI);
    if (tokenResult.Status != AuthenticationStatus.Success)
    {
        //Not authenticated
        return;
    }
    var svc = new YourServiceReference.YourClient();
    using (var scope = new OperationContextScope(svc.InnerChannel))
    {
        var httpRequestProperty = new HttpRequestMessageProperty();
        httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = tokenResult.AccessToken;
        OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
        var result = svc.MyFunction();
        //Do something with the data
    }
    

    【讨论】:

      【解决方案2】:

      棘手 - 这就是移动 OAuth 解决方案的工作方式 - 但这是一项艰巨的工作:

      • 您的 Xamarin 应用需要实施移动 SSO 才能让用户登录
      • Xamarin 应用的用户将被重定向到通过授权服务器/身份提供程序登录,之后他们将收到 OAuth 访问令牌
      • 登录后,您的 Xamarin 应用将能够使用令牌调用 API 并代表用户获取数据
      • API 需要验证收到的访问令牌

      解决方案部分

      API: ASMX 是一项古老的技术,因此如果您使用 Microsoft 堆栈,您会使用更新的技术,例如 .Net Core Web API

      移动应用程序:解决方案中更难的部分是实施移动 SSO,如果您还没有这样做的话。

      这种解决方案有多少已经存在?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-08
        • 1970-01-01
        • 2022-10-08
        • 1970-01-01
        • 1970-01-01
        • 2012-05-04
        • 2013-06-15
        • 2017-09-23
        相关资源
        最近更新 更多