Android:3d 安全重定向响应

Posted

技术标签:

【中文标题】Android:3d 安全重定向响应【英文标题】:Android: 3d-secure redirect response 【发布时间】:2016-06-09 06:33:04 【问题描述】:

我有一个android 应用程序,我在该应用程序内处理付款。付款有时还需要3d-secure 验证。因此,这需要将用户重定向到一个网页,在那里他们将能够进行一些适当的操作:例如输入代码等。就我而言,该应用程序针对瑞典用户,并将他们重定向到一个页面,他们必须在同一设备或另一个设备上打开另一个“bank ID”应用程序来执行此验证。

在我们的ios 应用程序上,此功能按预期工作。一旦用户执行了验证,浏览器就会收到一个回调,然后可以使用该回调相应地更新应用程序,但在Android 上,我正在使用的WebView 没有得到通知。所以到目前为止,我无法处理用户验证事件。

有人对这个或任何类似的用例有经验吗?任何帮助表示赞赏。

【问题讨论】:

您是否正确了解了 BankID 应用程序对您的应用程序的响应?那怎么办?如果您遇到此类要求,请告诉我。 【参考方案1】:

我们在 Android WebView 中的 Nordea 的 3D Secure 页面遇到了类似的问题。 它归结为试图访问本地存储的页面。我们将以下代码添加到应用程序以使其工作:

mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setDatabaseEnabled(true);

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) 
  mWebView.getSettings().setDatabasePath("/data/data/" + 
    mWebView.getContext().getPackageName() + "/databases/");


mWebView.setWebViewClient(new WebViewClient()
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) 
    if(url.startsWith("intent:"))
      Intent intent = new Intent();
      intent.setPackage("com.bankid.bus");
      intent.setAction(Intent.ACTION_VIEW);
      intent.addCategory(Intent.CATEGORY_BROWSABLE);
      intent.addCategory(Intent.CATEGORY_DEFAULT);
      intent.setType("bankid");
      intent.setData(Uri.parse("bankid://www.bankid.com?redirect=null")) ;
      startActivityForResult(intent, 0);
      return true;
    

    // your existing override code goes here probably "return false"  
    // to stop webview redirects to browser.
  
);
mWebView.loadUrl(url);

【讨论】:

感谢您的评论和解决方案。我实际上已经想到了这一点,但忘记在这里发布解决方案。 这也为我们解决了这个问题。单击“打开应用程序”按钮时,它仍然没有“找到”BankID 应用程序 - 但授权通过。 我只是想知道您如何在您的应用程序中知道,您是否可以从 BankID 应用程序实现任何回调以确保您的事情被成功处理! 是否有必要使用“Intent”通过 Android WebViewClient 打开 BankID 应用程序,或者是否可以设置为使用 bankid:/// url 方案自动启动应用程序,就像浏览器可以做的那样? 这里也一样。我无法启动 Bank-ID 应用程序。事实上,shouldOverrideUrlLoading 方法永远不会被调用。但是在用户手动切换到银行 ID 应用程序后,身份验证流程就会进行。谢谢!

以上是关于Android:3d 安全重定向响应的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 安全返回 401 响应而不是重定向

从 Chrome 重定向到带有位置标头的 302 后被阻止的 Android 应用

在 chrome 响应式模拟器中重定向更改用户代理

重定向

Flask重定向到外部文件,并提供文件名而不是原始文件名。

HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码