当前状态是什么,您能否让 Android webView(不是浏览器/Chrome 自定义选项卡)解释具有自定义 url 方案的链接,例如“bankid:///?autostarttoken=xxxx-xxxxc&redirect=https://...”
这里的预期行为是 BankID 应用程序应该在加载链接时打开 - 而是获取“err_unknown_url_scheme”。有什么解决方法吗?或者是使用 Intent 的唯一方法?
尝试使用如下 Intent,它可以工作,但是重定向参数 url 会遇到问题,这会打开不需要的浏览器。将其替换为 app id/null 以保留在 webView/app 中,但随后无法在 webView 中获取预期的回调 url。
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
if(!url.startsWith("http") && !url.startsWith("https")) {
Uri newUri = replaceUriParameter(Uri.parse(url),
"redirect", BuildConfig.APPLICATION_ID);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(newUri);
startActivityForResult(intent, START_ACTIVITY_FOR_RESULT_LOGIN);
view.reload();
return true;
}
}
Run Code Online (Sandbox Code Playgroud) 我有点紧张,正在开发一个基金经纪人网站.
作为我们安全策略的一部分,CSP在我们的服务器上实现,但现在,我们正在实施与斯堪的纳维亚银行(BankID)提供的桌面软件的通信.
有了这个,出现了一个问题:要打开BankID桌面软件,应该使用自定义协议单击一个链接,如下所示:
bankid://?orderref=[GUID]&autostarttoken=[GUID]
Run Code Online (Sandbox Code Playgroud)
我确信您理解,我遇到严重问题,允许通过我们的CSP政策进行此链接.我的搜索没有产生任何结果,我的想法已经用完了.
我试图在协议下尝试允许通配符域:
Content-Security-Policy: default-src 'self' bankid://*;
Run Code Online (Sandbox Code Playgroud)
如果我关闭CSP,它的效果非常好,所以这绝对是个问题.
有人对此有经验吗?任何帮助是极大的赞赏.
经过几个小时的搜索,我在Mozilla Wiki上找到了以下内容:
我们需要一种应用程序交付机制,它可以保证应用程序的完整性和真实性,还可以实现定义明确的应用程序和权限范围,从而可以在运行时维护完整性.
并进一步:
特权和认证的应用程序将通过一个独特的方案(app://)访问.域名将对应于应用ID.
我不确定这是否适用,但如果我认为这是正确的,那就意味着Mozilla正在考虑如何解决这个问题.
我有一个Android应用程序,我在应用程序中处理付款.付款还需要3d-secure验证.因此,这需要将用户重定向到可以进行适当操作的网页:例如输入代码等.在我的情况下,该应用程序针对瑞典用户,并将其重定向到一个页面,他们必须bank ID在同一设备或另一个设备上打开另一个" "应用程序,以执行此验证.
在我们的iOS应用程序上,此功能按预期工作 一旦用户执行了验证,浏览器就会收到一个回调,然后可以用它来相应地更新应用程序,但是Android,WebView我正在使用的是不通知的.所以到目前为止,我无法处理用户验证事件.
有没有人有这个或任何类似的用例的经验?任何帮助表示赞赏.