返回博客首页
← 所有帖子

保护您的移动应用程序 - 第四集(安全的用户认证)

2019 年 1 月 17 日 — 作者:Rob Lauer

无论您是开发传统的原生应用程序、从 Appcelerator 或 Xamarin 等工具交叉编译的应用程序、使用 Ionic 的混合应用程序,还是使用 NativeScript 或 React Native 的 JavaScript 原生应用程序,应用程序安全都是贯穿所有类型的应用程序的共同主题。

在之前的文章中,我们确保了传输中的数据从头到尾、从设备到云端都是 100% 安全的。我们了解到,通过利用 Progress Kinvey,我们拥有一个交钥匙解决方案,确保数据完整性、合规性和强大的性能。

观看网络研讨会 "保护移动应用程序的最佳实践",获取有关 NativeScript 安全的技巧和窍门!

随着我们结束本系列文章,我们想用一个至关重要的主题来总结:安全地验证和授权您的应用程序用户。

查看 NativeScripting.com 的移动应用程序安全新课程,使用代码:NSSECURE 可享受 30% 的折扣。

生物识别身份验证

我们已经远远超越了使用密码和通行码作为安全验证应用程序用户的标准方式。随着大多数 iOS 和 Android 设备内置的生物识别安全功能(例如指纹和面部识别),我们的应用程序应该专注于利用这些更加安全的技术。

对于指纹识别,Touch ID 是一种 iOS 功能,允许用户用指尖解锁设备。Android 也有等效的功能,通常称为“指纹扫描”。当然,两者都是基于通过在解锁设备之前扫描用户的指纹来验证用户。

对于面部识别,Face ID 是苹果公司为 iPhone X 系列设计的系统。Face ID 最终可能会取代 Touch ID 成为 iOS 设备上的默认生物识别身份验证技术。

要在您的应用程序中使用这些生物识别身份验证选项,有一个由 Eddy Verbruggen 开发的出色插件,称为 nativescript-fingerprint-auth

biometric security with nativescript

提示:虽然它被称为“指纹”插件,但它也 支持 iPhone X 系列设备上的 Face ID

该插件的基本用法包括检查生物识别支持是否可用等功能

import { FingerprintAuth, BiometricIDAvailableResult } from "nativescript-fingerprint-auth";

class MyClass {
  private fingerprintAuth: FingerprintAuth;

  constructor() {
    this.fingerprintAuth = new FingerprintAuth();
  }

  this.fingerprintAuth.available().then((result: BiometricIDAvailableResult) => {
    console.log(`Biometric ID available? ${result.any}`);
    console.log(`Touch? ${result.touch}`);
    console.log(`Face? ${result.face}`);
  });
}

并验证指纹(或 iPhone X 上的面部)

fingerprintAuth.verifyFingerprint(
    {
      title: 'Android title', // optional title (used only on Android)
      message: 'Scan yer finger', // optional (used on both platforms) - for FaceID on iOS see the notes about NSFaceIDUsageDescription
      authenticationValidityDuration: 10, // optional (used on Android, default 5)
      useCustomAndroidUI: false // set to true to use a different authentication screen (see below)
    })
    .then((enteredPassword?: string) => {
      if (enteredPassword === undefined) {
        console.log("Biometric ID OK")
      } else {
        // compare enteredPassword to the one the user previously configured for your app (which is not the users system password!)
      }
    })
    .catch(err => console.log(`Biometric ID NOT OK: ${JSON.stringify(err)}`)
);

查看 本教程,了解使用此插件与 NativeScript 和 Progress Kinvey 后端进行交互的演练。

nativescript-fingerprint-auth 是为我们的应用程序轻松添加生物识别安全性的好方法。但是,如何使用现有的安全协议和服务将已验证的个人与我们后端系统中的授权角色绑定呢?

OAuth 2.0

您可能之前听说过 OAuth,因为 OAuth 2.0 是一个常用的行业标准协议,用于用户授权。感谢我们庞大的插件开发人员社区,实际上有一个用于在 NativeScript 中与 OAuth 2.0 交互的插件,即 nativescript-oauth2 插件。

oauth 2.0 nativescript plugin

OAuth 2.0 插件有助于简化对支持 OAuth 2.0 协议的 OAuth 提供商(例如 Microsoft、Facebook 和 Google)的访问,但您也可以自行构建(甚至使用您组织自己的提供商)。

请务必 查阅插件文档,以获取入门帮助。

如果您好奇此插件在 NativeScript 应用程序中的技术实现是如何工作的,请查看为所有 NativeScript 支持的框架提供的演示应用程序

轻松的企业身份验证

您还在听吗?好吧,我承认:用户身份验证真是太麻烦了。😥

如果您正在自行构建身份验证提供商,您必须费力地设置登录表单、密码恢复系统和支持的后端基础设施。或者,您可能正在尝试与使用 SAML、OAuth(如上所述)或 Open ID 等缩略语的现有企业身份验证提供商进行集成。😵

对于更轻松的企业身份验证,请使用 企业身份验证模板,它位于 NativeScript Sidekick 中。

enterprise authentication with nativescript sidekick

NativeScript Sidekick 提供了 企业身份验证模板,以及一些旨在帮助您尽快连接到身份验证提供商的新功能。在 Progress Kinvey 的支持下,企业身份验证模板引导您完成连接到您选择的提供商的过程,并让您可以轻松自定义登录屏幕的外观和风格。

您可以阅读有关使用企业身份验证应用程序模板的更多信息 在 NativeScript 博客上,甚至注册 NativeScripting.com 上的免费在线课程,该课程将指导您使用它。

提示:如果您正在自行构建身份验证系统,您需要设计一个直观且尽可能友好的用户界面。我们已经编写了 一篇博客文章和一个示例应用程序,展示一些使用 NativeScript 构建您自己的出色登录屏幕的最佳实践。

📱🔐 系列的结论

在过去四篇文章中,我们涵盖了很多内容!我们从学习如何轻松地 保护我们的源代码 开始,然后讨论了确保 本地存储的数据安全且加密,谈论了一些 保护线上传输数据 的最佳实践,最后总结了一些确保我们安全地验证和授权最终用户的方法。