Skip to content

Repository files navigation

FIDO UAF Client & Authenticator

Build Status Maven Central

FIDO UAF Client & Authenticator Combo for Android by Hanko.

Supported UAF versions: 1.1

For more information on how FIDO UAF works, see FIDO Alliance.

Installation

Since version 1.0.1 the package is distributed through MavenCentral. Before that version the package is distributed through JCenter.

Requirements

  • min. android SDK version: 23
  • secure keyguard (biometrics, pin, pattern, etc.)

Gradle

implementation 'io.hanko:fidouafclient:<latest-version>'

Basic Usage

Call FIDO Client

Intent intent = new Intent(context, io.hanko.fidouafclient.FidoUafClient.class);
intent.setType("application/fido.uaf_client+json");
intent.putExtra("UAFIntentType", "UAF_OPERATION");
intent.putExtra("channelBindings", "{}");
intent.putExtra("message", "<fido-uaf-request>");

startActivityForResult(intent, REQUEST_CODE);

The <fido-uaf-request> must be in format defined in UAFMessage.

Example of UAFMessage

{
	"uafProtocolMessage": "<uaf-protocol-message-string>"
}

Result of FIDO Client

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	if(resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
		short errorCode = data.getShortExtra("errorCode", (short) 0xFF);
		if(errorCode == 0x00) { // erroCode 0x00 means success
			try {
				JSONObject jsonObject = new JSONObject(data.getStringExtra("message"));
				String uafResponse = jsonObject.getString("uafProtocolMessage");
				// verify uafResponse
			} catch(JSONException ex) {
				// TODO
			}
		} else {
			// some error occured, use errorCode for determination
		}
	}
}

Note: All available ErrorCodes can be found here.

Limitations

This is a Client & Authenticator Combo so it only uses it´s build-in authenticator.

Metadata

{
	"aaid": "006F#0001",
	"description": "Hanko UAF Client/Authenticator Combo for Android",
	"authenticatorVersion": 1,
	"upv": [
		{
			"major": 1,
			"minor": 1
		}
	],
	"assertionScheme": "UAFV1TLV",
	"authenticationAlgorithm": 2,
	"publicKeyAlgAndEncoding": 257,
	"attestationTypes": [15880],
	"userVerificationDetails": [
		[
			{
				"userVerification": 2
			}
		],
		[
			{
				"userVerification": 4
			}
		],
		[
			{
				"userVerification": 8
			}
		],
		[
			{
				"userVerification": 16
			}
		],
		[
			{
				"userVerification": 64
			}
		],
		[
			{
				"userVerification": 128
			}
		],
		[
			{
				"userVerification": 256
			}
		]
	],
	"protocolFamily": "uaf",
	"keyProtection": 1,
	"matcherProtection": 1,
	"attachmentHint": 1,
	"isSecondFactorOnly": false,
	"tcDisplay": 1,
	"tcDisplayContentType": "text/plain",
	"attestationRootCertificates": [],
	"icon": "data:image/png;base64,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"
}

Configuration

Reachability

The FIDO UAF Client is only available for your app. You can make it publicly available for all apps on the device. Just add this to your AndroidManifest.xml:

<activity android:name="io.hanko.fidouafclient.FidoUafClient">
    <intent-filter>
        <action android:name="org.fidoalliance.intent.FIDO_OPERATION" />

        <data android:mimeType="application/fido.uaf_client+json" />

        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

Customization

Strings

To customize the strings which are displayed during registration and authentication just define the following strings in your strings file:

<resources>
    <string name="uafclient_biometric_prompt_title_reg">Register</string>
    <string name="uafclient_biometric_prompt_title_auth">Authenticate</string>
    <string name="uafclient_biometric_prompt_description_reg">Authenticate to create a key</string>
    <string name="uafclient_biometric_prompt_description_auth">Authenticate to use a key</string>

    <string name="uafclient_account_chooser_title">Choose your key</string>
</resources>

License

Copyright 2019 Hanko GmbH

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

FIDO UAF Client & Authenticator library for Android

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages