소스 검색

Merge pull request #3510 from nextcloud/chore/noid/updateFido

Bump hwsecurity-fido from 2.4.5 to 4.1.0-patch2
Andy Scherzinger 1 년 전
부모
커밋
8067240fd2
2개의 변경된 파일14개의 추가작업 그리고 1개의 파일을 삭제
  1. 3 1
      app/build.gradle
  2. 11 0
      app/src/main/java/com/nextcloud/talk/account/WebViewLoginActivity.kt

+ 3 - 1
app/build.gradle

@@ -145,6 +145,7 @@ ext {
     coilKtVersion = "2.5.0"
     coilKtVersion = "2.5.0"
     daggerVersion = "2.49"
     daggerVersion = "2.49"
     emojiVersion = "1.4.0"
     emojiVersion = "1.4.0"
+    fidoVersion = "4.1.0-patch2"
     lifecycleVersion = '2.6.2'
     lifecycleVersion = '2.6.2'
     okhttpVersion = "4.12.0"
     okhttpVersion = "4.12.0"
     markwonVersion = "4.6.2"
     markwonVersion = "4.6.2"
@@ -252,7 +253,8 @@ dependencies {
     implementation "io.coil-kt:coil-svg:${coilKtVersion}"
     implementation "io.coil-kt:coil-svg:${coilKtVersion}"
     implementation 'com.github.natario1:Autocomplete:v1.1.0'
     implementation 'com.github.natario1:Autocomplete:v1.1.0'
 
 
-    implementation 'com.github.cotechde.hwsecurity:hwsecurity-fido:2.4.5'
+    implementation "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido:${fidoVersion}"
+    implementation "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido2:${fidoVersion}"
 
 
     implementation 'com.novoda:merlin:1.2.1'
     implementation 'com.novoda:merlin:1.2.1'
 
 

+ 11 - 0
app/src/main/java/com/nextcloud/talk/account/WebViewLoginActivity.kt

@@ -66,6 +66,8 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_TOKEN
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USERNAME
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USERNAME
 import com.nextcloud.talk.utils.ssl.TrustManager
 import com.nextcloud.talk.utils.ssl.TrustManager
 import de.cotech.hw.fido.WebViewFidoBridge
 import de.cotech.hw.fido.WebViewFidoBridge
+import de.cotech.hw.fido2.WebViewWebauthnBridge
+import de.cotech.hw.fido2.ui.WebauthnDialogOptions
 import io.reactivex.disposables.Disposable
 import io.reactivex.disposables.Disposable
 import java.lang.reflect.Field
 import java.lang.reflect.Field
 import java.net.CookieManager
 import java.net.CookieManager
@@ -99,6 +101,7 @@ class WebViewLoginActivity : BaseActivity() {
     private var loginStep = 0
     private var loginStep = 0
     private var automatedLoginAttempted = false
     private var automatedLoginAttempted = false
     private var webViewFidoBridge: WebViewFidoBridge? = null
     private var webViewFidoBridge: WebViewFidoBridge? = null
+    private var webViewWebauthnBridge: WebViewWebauthnBridge? = null
 
 
     private val onBackPressedCallback = object : OnBackPressedCallback(true) {
     private val onBackPressedCallback = object : OnBackPressedCallback(true) {
         override fun handleOnBackPressed() {
         override fun handleOnBackPressed() {
@@ -164,6 +167,12 @@ class WebViewLoginActivity : BaseActivity() {
         binding.webview.clearHistory()
         binding.webview.clearHistory()
         WebView.clearClientCertPreferences(null)
         WebView.clearClientCertPreferences(null)
         webViewFidoBridge = WebViewFidoBridge.createInstanceForWebView(this, binding.webview)
         webViewFidoBridge = WebViewFidoBridge.createInstanceForWebView(this, binding.webview)
+
+        val webauthnOptionsBuilder = WebauthnDialogOptions.builder().setShowSdkLogo(true).setAllowSkipPin(true)
+        webViewWebauthnBridge = WebViewWebauthnBridge.createInstanceForWebView(
+            this, binding.webview, webauthnOptionsBuilder
+        )
+
         CookieSyncManager.createInstance(this)
         CookieSyncManager.createInstance(this)
         android.webkit.CookieManager.getInstance().removeAllCookies(null)
         android.webkit.CookieManager.getInstance().removeAllCookies(null)
         val headers: MutableMap<String, String> = HashMap()
         val headers: MutableMap<String, String> = HashMap()
@@ -172,12 +181,14 @@ class WebViewLoginActivity : BaseActivity() {
             private var basePageLoaded = false
             private var basePageLoaded = false
             override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse? {
             override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse? {
                 webViewFidoBridge?.delegateShouldInterceptRequest(view, request)
                 webViewFidoBridge?.delegateShouldInterceptRequest(view, request)
+                webViewWebauthnBridge?.delegateShouldInterceptRequest(view, request)
                 return super.shouldInterceptRequest(view, request)
                 return super.shouldInterceptRequest(view, request)
             }
             }
 
 
             override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
             override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
                 super.onPageStarted(view, url, favicon)
                 super.onPageStarted(view, url, favicon)
                 webViewFidoBridge?.delegateOnPageStarted(view, url, favicon)
                 webViewFidoBridge?.delegateOnPageStarted(view, url, favicon)
+                webViewWebauthnBridge?.delegateOnPageStarted(view, url, favicon)
             }
             }
 
 
             @Deprecated("Use shouldOverrideUrlLoading(WebView view, WebResourceRequest request)")
             @Deprecated("Use shouldOverrideUrlLoading(WebView view, WebResourceRequest request)")