【问题标题】:Read browser URL from Xamarin form android for custom OAuth code sent from the IDP in redirect URL从 Xamarin 表单 android 中读取浏览器 URL,以获取从 IDP 在重定向 URL 中发送的自定义 OAuth 代码
【发布时间】:2021-06-22 11:37:23
【问题描述】:

我正在尝试在我的 Xamarin 应用程序中实现自定义 OAuth 登录。

单击登录按钮时,我正在从浏览器中访问 OAuth API。

它正在重定向到我的自定义 OAuth 身份验证页面,并在初始身份验证后从我的域页面的 auth.html 的 URL 中发送一个身份验证代码。我需要阅读该 URL 并进一步处理。

我在按钮中的代码点击:

var apiEndpoint = "https://auth.example.com/oauth2/authorize?response_type=code&client_id=myclientid&redirect_uri=https://example.com/apps/auth.html&state=STATE";
await Browser.OpenAsync("apiEndpoint", BrowserLaunchMode.SystemPreferred);

当从我的域重定向 uri 返回时,我需要从 URL 中读取代码,如下所示:

https://orion.lexmark.com/winapps/auth.html?code=12358123-2200-4ga6-a806-8f60f5636ac8&state=STATE

我对 xamarin 世界很陌生,对此有任何帮助。

【问题讨论】:

    标签: xamarin xamarin.forms oauth-2.0 xamarin.android mobile-browser


    【解决方案1】:

    进行移动 OAuth 的最常见方法是使用私有 URI Schene URL,例如,当登录响应返回到浏览器时,它将使用登录响应调用应用程序:

    • com.mycompany。 myapp:/回调

    还可以通过系统浏览器的集成形式(Android 上的 Chrome 自定义选项卡)打开 URL。

    开发人员通常还插入开源 AppAuth libraries 以完成正确使用 OAuth 消息的棘手工作。由于额外的层,这在 Xamarin 中会更难。

    我建议您看看 AppAuth 并至少从中借鉴一些想法。我的Android AppAuth Blog Post 解释了一个快速工作的设置。

    【讨论】:

    • Gary,感谢您的回复,我正在浏览您的博客。对于我们的案例,我们有两步 OAuth 流程。我们通过 AWS cognito 中的自定义 SAML 提供商进行身份验证。首先获取身份验证代码,然后再次获取代码调用 API 端点以获取令牌。所以在第一个流程中,我需要从 url 获取代码。然后调用另一个 api 来获取令牌,我卡在第一个流程上。
    • 两步过程很好 - 您的应用只需要通过 OpenID Connect 与 Cognito 对话 - 如果您使用私有 URI 方案,您将能够在应用中注册它,然后收到登录响应带有授权码。
    • 您应该能够将小型 AppAuth 示例重新指向您自己的环境,并在更新 Xamarin 应用程序之前证明它可以按照您想要的方式工作。
    • 它终于按预期工作了。进行了两项更改。 1. 区分大小写的认知重定向 url 和 xamarin 应用程序中的数据方案。感谢您的帮助。
    猜你喜欢
    • 2013-04-27
    • 1970-01-01
    • 2021-12-02
    • 2011-02-11
    • 2015-09-20
    • 1970-01-01
    • 2021-09-15
    • 2015-01-04
    • 2014-12-18
    相关资源
    最近更新 更多