What is the status of Webauthn on iOS/Safari? - ios

I am doing a presentation on the FIDO2/Webauthn standard in a few days and I was excited to see this article on Yubico's website stating that Apple has added support for FIDO authentication via NFC like Android has for years. I had a few of my colleagues go to the various Webauthn test sites out there (webauthn.me, webauthn.io etc) on a newer device running iOS 13.1 but they all display errors stating that the browser is not supported (both safari and chrome). Is there something you have to do to enable this functionality or are we waiting for an update from Apple to enable the feature?

We're waiting on this too. What does bode well is the new NFC write support that was added in 13. The WebAuthn JavaScript API is also available in Safari as an experimental feature - it just doesn't do any FIDO2/CTAP2 stuff yet.
I fully expect to see native support (using NFC, Lightning and built-in PIN/Touch/Face ID) in the not too distant future - especially given Apple are on-board with this and the support in desktop Safari is good.
The question is when...
Editted to add 15 Dec 2019:
As of the 10th of Dec 2019 Safari on iOS 13.3 supports second factor (i.e. not usernameless/passwordless) sign in using NFC, Lightning or USB security keys. I've tested this myself using 2 different Yubico keys that support NFC.
Unfortunately it does not look like registration via the WebAuthn API is working at this time. It presents a UI prompt to plug in or tap the key but nothing seems to happen.
There is also no support yet for using the phone itself as a security key via PIN, Touch ID or Face ID.
This is still a significant step and I can only hope that Apple continues to expand the supported featureset.
Article here: https://www.yubico.com/2019/12/native-support-for-webauthn-and-fido-is-finally-here-on-iphones-and-ipads/
Updated to add announcement for Touch and Face ID on iOS:
https://developer.apple.com/videos/play/wwdc2020/10670/

UPDATE:
Starting with iOS 13.3, WebAuthn support is added in Safari. WebAuthn compatible security keys using NFC, Lightning or USB should work with current implementations of the API. I have been able to verify this using my Yubikey 5Ci using Lightning.
Original answer:
At the moment, there is no support for the WebAuthn API in iOS/iPadOS and there is also no method to enable it. As far as I know, FIDO authentication on iOS currently only works for apps that have integrated it.
On this page you can see exactly what browsers support the WebAuthn API (ar any other web API) at the moment.

Safari with iOS/iPadOS 14 and macOS Big Sur supports WebAuthn with FaceID and TouchID, as announced at the WWDC 2020.

I've been using a NFC key (FEITAN ePass FIDO -NFC Security Key) for about a year with my iPhone 7 using the latest iOS available on it. Also, the Touch ID is working well on my iPhone 7 and iPad Air 2 (no Face ID on those so I can't test that).
About Touch ID, it is a bit tricky to use. It does not come up as an option to register in Safari javascript if you use a callback rather than the same thread as the button event to call navigator.credentials.create({publicKey}). Finding that out was nasty! So no "setTimeout(register...)" or a promise (.then/await) to launch registration using Touch ID.
I use https://www.npmjs.com/package/fido2-lib as backing library on the server side.

Related

Is it possible to programmatically enable wifi on Android 10 devices?

Since setWifiEnabled is deprecated on Android 10, how does one programatically enable wifi on Android 10 devices?
Is it not possible to programmatically enable wifi at all on Android 10+ (SDK 29) ?
No, This is not possible to enable or disable Wi-Fi programmatically from Android-10 API level 29 [Until google provides an alternative solution].
For applications targeting Build.VERSION_CODES.Q or above, this API will always return false and will have no effect.
If apps are targeting an older SDK ( Build.VERSION_CODES.P or below), they can continue to use this API.
There is an issue 128554616 which already has been created in google issuetracker forum. You can see there for any updated info.
Now in android 10 you can do like this
Intent panelIntent = new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
startActivityForResult(panelIntent);
ACTION_INTERNET_CONNECTIVITY
Shows settings related to internet connectivity, such as Airplane mode, Wi-Fi, and Mobile Data.
ACTION_WIFI
Shows Wi-Fi settings, but not the other connectivity settings. This is useful for apps that need a Wi-Fi connection to perform large uploads or downloads.
ACTION_NFC
Shows all settings related to near-field communication (NFC).
ACTION_VOLUME
Shows volume settings for all audio streams.
Yes it is! Google is giving the answer pretty clearly:
If apps are targeting an older SDK ( Build.VERSION_CODES.P or below), they can continue to use this API.
Change your API to 28 and it works great. Or if you need a solution for Apps like Tasker or Automate see my post here:
https://stackoverflow.com/a/65022589/14712690

iOS/iPadOS safari push api support

Does the iOS/iPadOS version of safari support push api standard with service worker?
EDIT: there is a petition you can sign to raise awareness on this topic
iOS don't support the W3C Spec web push notifications yet. But there is a Safari specific API for web notifications. Refer to this answer on multiple options you have.
https://stackoverflow.com/a/49803408/1057093
Update: Corrected the Answer in the above link to clarify proprietary solution is only for OS X - Safari and no solution for iOS Safari yet. Custom in app notification is the best we can do today for iOS Safari.
iOS 12, 13, and now iOS/iPadOS 14 still doesn't support these features:
Web Push Notification
Background Sync
Page Lifecycle
Service Workers on WebViews
Universal Links / Link Capturing
So many requests from the community for these features but Apple don't want to hear it. Maybe they think these features have a bigger chance to be unnecessary exploited(spam, etc). And also maybe they want to force developers to create the native application rather than the progressive web application.
I tested iOS 12 in beta last week and as Anand said, there is no change about this functionnality and more globally for Progressive Web App because the Web Manifest, in developpement at this moment is not implemented yet.
iOS 15.4 added a Push API feature in safari
Settings > Safari > Advanced > Experimental WebKitFeatures
but it is turned off by default.
That doesn't mean the Web Push Notification is fully supported in iOS but it is a hint that it might be coming soon.
Hopefully iOS 16 🤞
It still doesn't, but it was just announced that it's coming in 2023.
Source: https://webkit.org/blog/12824/news-from-wwdc-webkit-features-in-safari-16-beta/
(It's at the bottom of the "Web Push for macOS
" section)

webRTC-enabled browser for iOS?

Preface: there are questions (some good, some bad) already in existance on StackOverflow about webRTC support on various browsers and platforms, including iOS. However I couldn't find anything definitive that was more recent than ~2012, and this is a rapidly-changing field.
I'm working on a browser-based webapp that uses webRTC for minimal-latency peer-to-peer data transfer (not for audio/video, unlike most applications it would seem - all I need is DataChannel).
I hit a snag when I started testing the data-transfer part of the project and discovered that iOS devices still don't natively support this in their built-in browsers (despite some recent rumors).
Bowser is a free open-source browser App for iOS that purports to support webRTC on iOS. The problem is that when I try to open the app, it simply crashes and closes. I've tested this on an iPhone 5 and 5s. Googling has failed to turn up alternatives - even Chrome for iOS doesn't currently support webRTC it seems.
My questions:
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
3) What strategies have other people used to work around this limitation?
As of iOS 11, WebRTC is now supported in Safari: https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_0.html#//apple_ref/doc/uid/TP40014305-CH13-SW1
Check out crosswalk project ( https://crosswalk-project.org )
This Provides runtime of Chromium engine for native support in older devices.
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
Answer:
There is a Browser called Bowser that supports webRTC.
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
Answer:
It's not crashing as of now.But I couldn't successfully test with anything so far.I have raised an issue about it
3) What strategies have other people used to work around this limitation?
Answer:
Apple is yet to support WebRTC in Webkit so as of now the only way would be develop a native or Hybrid app that would support the unsupported WebRTC APIs.
You can develop a hybrid app powered by OpenWebRTC or cordova-plugin-iosrtc

How to implement Mobile Device Management in iOS 7?

I have gone through a lot of documentation related to Mobile Device Management in iOS but still I have a lot of confusion about it.As per the apple they have made a significant change in device management in iOS 7 but still most of the blogs written about it are old and absolute.Can somebody please give me a brief explanation of how I should go step by step in iOS 7.Also I want to know if I don't have any MDM server initially then how can I test my code.Is Maverics local server sufficient enough to handle this or we can't process without an MDM server.If it is then please suggest me how should I go.
References:
iOS: Mobile Device Management
Mobile Device Management with iPhone
iPhone Mobile Device Management
There was NO significant changes between iOS 6 and iOS 7 in MDM protocol. Yes, Apple added additional features, configuration profiles and so on. And usually, they call these things "groundbreaking/revolutionary changes" :)
Actually, the protocol stayed the same (with very minor changes) from version iOS 4.0 to iOS 8.0. I would say the bigest changes were around creation of APNS certificate.
So, you can take any open source implementation of MDM and use it for iOS 7:
Profile manager (included in OS X Server). it's in some mix of ruby + binary
WSO2
iMAS
P.S. I would recommend to ask more specific questions. As example, I started to implement MDM server and stuck on item X. I tried Y,Z and it didn't work. How to solve this problem?

To what extent is web bluetooth usable in mobile devices?

From my understanding, the web bluetooth api found here:
https://googlechrome.github.io/samples/web-bluetooth/
is good with chrome across devices, but other browsers do not support it. Is this true?
this stackoverflow post says otherwise but it was two years ago and i'm just not sure if its even possible with IOS or a significant number of devices.
Scanning for beacons on iOS thru' web browser
I also saw this hackaday site that says you need the WebBLE app to do this, is that true?
https://hackaday.io/project/164733-pisugar-battery-for-raspberry-pi-zero/log/167217-use-web-bluetooth-to-connect-your-pi
Web Bluetooth Implementation Status is the best source for status.
On mobile: Android support via Chrome, Samsung Internet. iOS support via WebBLE.

Resources