Tag: 身份验证

如何使用iOS生物识别身份验证启用登录

在开发CloudEver应用程序时,我了解了iOS生物识别技术,包括Face ID和Touch ID。 然后,我查看了一些具有指纹登录功能的应用程序,发现其中许多应用程序没有充分利用iOS安全功能的优势。 我想与社区分享知识,并希望我们使用的应用程序将越来越安全。 大多数早期的Internet服务主要为未登录的每个人提供静态内容。 后来,出现了一些动态服务,例如论坛,聊天室等。 那时,身份验证需要密码。 然后,密码认证已被许多Internet服务广泛采用。 但是,要确保密码认证的安全性并不容易。 如果用户名和密码被他人破解,可能会泄露用户信息,甚至造成金钱损失。 那么,实现密码认证的常见错误是什么? 1.使用HTTP代替HTTPS进行密码身份验证 过去,一些著名的Internet公司设计了自己的方法来对浏览器中的密码进行加密,然后将其提交到其服务器以通过HTTP进行身份验证。 后来,他们发现这是错误的,今天几乎所有大公司都转换为HTTPS。 我们必须使用HTTPS来验证用户名和密码。 2.使用HTTPS进行密码身份验证,但通过HTTP显示登录框 一些开发人员认为,只要通过HTTPS传输,用户名和密码就不会被泄露。 因此,它们通过HTTP提供登录页面以节省服务器资源。 但是,这是一个非常常见的错误。 黑客可能会通过HTTP(即MITM javascript注入)将恶意javascript嵌入登录页面。 用户名和密码可能是由恶意JS代码收集的。 From Comcast仍使用MITM javascript注入来投放不需要的广告和消息 登录框必须通过HTTPS提供 3.用户名不存在 我发现登录某些网站时,对于不存在的用户名和错误的密码,有两种不同的错误消息。 这有什么问题吗? 绝对! 知道用户名以这种方式存在后,黑客只需要破解密码即可。 在这个数十亿美元的世界中,我们的手机号码和电子邮件地址没有任何秘密。 4.以纯文本形式存储密码 开发人员如何存储用户密码? 是的,有些只是将其插入其数据库中。 许多经验不足的开发人员通常在构建网站时都会不加思索地将用户信息保存到数据库中,然后使用SQL来验证用户密码。 如此简单,却如此不安全! 以纯文本形式保存密码意味着 开发人员,运营工程师,甚至公司的其他员工都可以直接访问用户密码! 发生数据泄露时,黑客会知道大量密码。 在不同平台上重用密码的所有用户帐户也有危险! 5.将密码存储在哈希中 一些开发人员认为,单向哈希是一种加密密码的好方法,黑客无法恢复原始密码。 那是个错误的主意。 尽管安全哈希算法是不可逆的,但密码哈希是可逆的。 这是因为哈希算法(例如MD5,SHA1)始终针对相同的密码计算相同的结果。 看一下“ MySQL.users”表,相同密码的哈希值是否相同? 您可能知道,也可能不知道,有些人正在计算所有密码哈希并将其放在Internet上免费下载。 到目前为止,已经计算出9个符号内所有字母数字组合的密码,总共1TB数据。 那么您的密码有多少个符号? 也许您会认为,在如此庞大的数据库中通过哈希查找密码并不容易。 当没有这种彩虹表技术时,您是正确的。 6.哈希组合 […]

Okta身份验证第1部分

使用Okta,用户可以轻松地将身份验证和授权集成到本机iOS应用程序中。 两种类型的Okta身份验证。 Okta Mobile Connect(SAML) OpenID连接 Okta Mobile Connect为支持SAML(安全性断言标记语言)的本机移动应用程序启用SSO(单一登录)。 SSO(单点登录)的优点: 1.无需输入用户名和密码 2.无需记住和更新密码。 3.没有弱密码。 OpenID Connect扩展了OAuth 2.0协议。 OAuth 2.0通过作用域访问令牌提供API安全性,而OpenID Connect提供用户身份验证和SSO(单点登录)功能。 Okta身份验证API: Okta身份验证API用于通过创建和控制会话令牌来控制对本机应用程序的访问。 会话令牌是身份验证事务成功完成时发出的一次性令牌。 Okta中使用的会话令牌,而访问令牌,刷新令牌和用于访问第三方应用程序(例如您的应用程序)的客户端ID。 OAuth 2.0: OAuth 2.0协议用于以安全的方式授予对您的应用程序数据的授予访问权限。 OAuth 2.0具有以下4个重要角色: 服务器是“授权服务器”,它发出访问令牌。 Okta是授权服务器。 “资源所有者”,通常是应用程序的最终用户,授予使用访问令牌访问资源服务器的权限。 应用程序“客户端”从Okta请求访问令牌,然后将其传递到资源服务器。 “资源服务器”,它接受访问令牌,并且必须验证它是否有效。 资源服务器就是您的应用程序。 OAuth 2.0授权流程的工作方式如下: 客户端向资源所有者(用户)请求授权。 如果用户给予授权,则客户端将授权授予传递给授权服务器(Okta)。 如果授予有效,则授权服务器将返回访问令牌以及刷新令牌和ID令牌。 客户端使用访问令牌来访问资源服务器。 OpenID Connect: OpenID Connect是建立在OAuth 2.0之上的身份验证标准。 它添加了另一个称为ID令牌的令牌。 OpenID Connect的重要角色: “ OpenID提供程序”是颁发ID令牌的授权服务器。 Okta代表OpenID提供者。 “最终用户”,其信息包含在ID令牌中。 “信赖方”,即从Okta请求ID令牌的客户端应用程序。 “ […]

Firebase电子邮件链接身份验证

Firebase提供了很棒的api来管理应用程序的后端。 今天,我们将在iOS App中实现Firebase电子邮件链接身份验证功能。 在我们开始之前,没有多少关于此功能的信息。 当用户点击该链接时,您可以发送电子邮件验证链接,它将用户重定向到应用,然后用户可以使用EMAIL和LINK登录。 注意:这是少密码登录。 您可以按照以下Firebase文档中的功能进行操作: 我将描述实现iOS应用程序此功能的所有必要步骤,请按照以下指南进行操作: 注意:为此功能,必须在 App Store Connect 上创建iOS应用 程序, 因为Firebase在创建动态链接时需要App Store ID和Team ID。 我不会介绍如何使用Firebase文档设置iOS App的出色表现。 完成设置后,安装Pod’Firebase / Auth’。 通过转到Firebase控制台“身份验证”选项卡,从顶部选择“登录方法”,以启用电子邮件链接(无密码)登录。 这是此功能的核心部分,请按照以下每个步骤仔细实施: 转到您的项目Firebase控制台,打开“动态链接”选项卡。 添加您的域,主要是Firebase建议的域名。 创建新的动态链接并设置短URL链接: 现在设置动态链接,复制您的授权域并粘贴在深层链接URL字段中。 授权域路径:Firebase控制台>身份验证>登录方法>向下滚动。 定义iOS链接行为,选择“在iOS应用中打开深层链接”,然后从下拉列表中选择应用捆绑包ID: 现在不需要4和5了,都按下一步创建它。 现在,我们必须在Xcode项目功能和信息选项卡中做两件事。 首先复制“动态链接域”,然后转到“ Xcode功能”选项卡,在“关联域”中创建一个并编写应用链接:并粘贴您的域。 其次,我们必须创建一个URL方案,打开Xcode Info选项卡并展开URL Types创建一个副本,然后将您的iOS App bundle标识符粘贴到URL Schemes字段中。 确保从下拉列表中选择“编辑者”角色,然后根据需要命名该标识符。 现在您已经准备好了,在继续进行编码之前,让我向您展示App UI,以便您了解功能和代码的工作方式。 我已经创建了用于输入电子邮件的简单文本字段和两个按钮,即“发送链接”按钮(用于向用户发送电子邮件)和“登录”按钮(用于在验证后使用电子邮件登录)。 您可以根据自己的需求自定义它。我已经创建了一个演示来实现此Firebase功能。 我希望你已经 在iOS应用和Pod’Firebase / Auth’中设置Firebase。 当用户单击“发送链接”按钮时,我们将通过调用firebase Auth.auth.SendSignInLink Api函数将身份验证链接发送到用户的电子邮件,该函数接受电子邮件和Parameters中的ActionCodeSetting。 ActionCodeSetting向Firebase提供有关如何构造电子邮件链接的说明。 下面是“发送链接”按钮操作的代码片段: […]

在iOS 11中使用自动填充密码轻松登录

介绍 每当他们遇到登录屏幕时,用户都会在各处看到密码。 有时这会在他们中间造成某种烦恼。 苹果的默认浏览器(即Safari)保存了密码,用户可以使用iCloud将其与多个设备同步。 从iOS 11开始,Apple引入了一个新库,该库允许第三方应用自动填充密码。 密码自动填充功能允许用户通过与键盘上方显示的QuickType栏进行交互,将其登录凭据直接填写到您的应用中。 配置您的应用以进行自动填充 AutoFill将在iOS 11中的应用程序中自动运行。仍然有一些可用的技术可以确保您的应用程序可以在AutoFill上正常运行。 它在键盘上方显示了一个密码按钮,只需在文本字段上使用一些设置即可实现。 但是为了确保哪个密码属于您的应用程序,我们需要将其与我们的网站相关联,并将向用户建议该密码。 设置您的文本字段 您可以通过代码或使用Xcode的界面生成器为自动填充配置文本字段。 iOS 11提供了UITextContentType两个新属性,它们是: txtUsername.textContentType = .username txtPassword.textContentType = .password 之后,iOS将在键盘上方显示一个按钮,使用户可以从保存的列表中选择密码。 它也适用于多个登录屏幕。 现在,将您的网站与您的应用程序相关联,iOS可以通过该应用程序建议正确的密码。 设置您的应用以获取正确的密码建议 默认情况下,iOS 11将不显示与您的应用程序关联的密码,而是显示已保存密码的完整列表。 现在,您可以按照以下步骤操作,让iOS知道这些密码属于您的应用。 将您的应用与网站相关联,以便您获得仅与应用有关的密码建议。 要将您的应用程序与网站相关联,您将需要一个名为apple-app-site-association 。 这是在深层链接中使用的同一文件。 为此,您需要在我们的Xcode项目中启用关联域。 切换到Xcode项目设置,转到“ 功能”标签,然后打开“ 关联域” 。 在此添加您的网站网址。 假设您的网站域名是yourwebsite.com。 列出的域名应该是webcredentials:yourwebsite.com 。 在您的服务器上,添加apple-app-site-association文件。 它应该包含一个webcredentials部分,用于指定您的应用。 这是一个例子: { “webcredentials”: { “apps”: [T7836PQ635.com.companyName.YourApp] } } T7836PQ635.com.companyName.YourApp这些是与应用程序关联的详细信息。 您可以在Apple Developer […]

Firebase认证の基本的な使い方

Firebase身份验证を使いこなすと,かなり楽に高品质な认证プロセスを组めるので,绍介します。 Firebase身份验证| 火力基地 要将用户登录到您的应用程序,您首先需要从该用户获取身份验证凭据。 这些凭证可以是用户… firebase.google.com 主,iOSアプリ・自前APIにーバーのーの组の合プ替换ですが,それ以外の构成とする场合の参考の。 1.クライアントでFirebase认证の代币取得 认证方法は,以下に対応しています。 谷歌 脸书 推特 的GitHub ルール 电话番号 baseール认证では确认メール送信,电话番号认证は认证ド発ード発行部分までFirebase侧でやってくれて,すごく良くできています👏 また,匿名认证も対応しているので,アプリをインストール・起动するだけでユーザー操作なしでtoken取得することもできます👏 在iOS上使用Firebase匿名进行身份验证| 火力基地 您可以使用Firebase身份验证来创建并使用临时匿名帐户向Firebase进行身份验证。 这些… firebase.google.com は,上记记法以外的其他认证方法を提供したい场合も,ちょっと頑張ればできます。 使用自定义身份验证系统在iOS上使用Firebase进行身份验证| 火力基地 用户首次登录后,将创建一个新的用户帐户并将其链接到凭据,即该用户… firebase.google.com 以下でInstagramアカウントでの认证に対応するやり方が解说されています。同様のやり方で他のサービス対応もできます。 使用Instagram对您的Firebase用户进行身份验证 Firebase身份验证支持开箱即用的四个联合身份提供者,从而使身份验证超级容易。 firebase.googleblog.com 1、1ユーザーに复数のアカウントの认证を纽づけることもできます。 やり方は以下の检索客户的ID令牌に记にいます。 验证ID令牌| 火力基地 当用户或设备成功登录后,Firebase会创建一个相应的ID令牌,以唯一地标识他们… firebase.google.com また,この令牌は有效期限が1时间なことに注意です(后述の検证过程で有效期限切れかどうかチェックします)。 FIRUser.getIDToken(completion:)メソッドは,期限切れの场合にリフレッシュされたtokenを受け取れる(そうでない场合は保持しているtokenが返るはず)ので,自前で保持せずに挟むのが良いかなと思っています。 检索Firebase身份验证令牌,如果令牌已过期,则可以刷新它。 https://github.com/firebase/firebase-ios-sdk/blob/5430b776ca6fea34d84dab09db39c51b51e551da/Firebase/Auth/Source/Public/FIRUser.h#L263-L271 2. tokenを授权:Bearerヘッヘ入れてAPIリクエスト その令牌を授权:Bearerヘッダに入れるなどして自前APIサーバーにリにックストします。 curl -X“ POST”“ https:// YOUR_API / authenticate” -H“授权:承载YOUR_TOKEN” 3.サーバー侧でその令牌を検证—验证 でーバー侧で,以下の使用Firebase Admin […]

如何为您的iOS应用设置生物特征认证

多年来,安全一直是苹果的主要关注点,他们一直在倡导为iOS和整个Apple生态系统提供更好的安全性。 Touch ID于2013年从iPhone 5s开始引入,最近发布的iPhone X用Face ID代替了它,用户可以使用其面部来进行生物特征登录,而不是Touch ID。 Touch ID使用先进的电容式触摸来检测用户的指纹,因为Face ID使用iPhone X中的正面真实深度摄像头,并且在两种情况下,数据都被发送到Apple处理器内部的安全区域,该区域与其他系统隔离包括iOS。 没有数据存储在Apple服务器或任何iCloud服务器中。 苹果公司声称某人能够使用Face ID打开手机的可能性为1,000,000分之一(与您拥有相同指纹的概率为50,000,十分之一)。 如何在应用程序中添加Touch ID / Face ID 为了为用户提供更好的安全性和简化的登录,您可以在自己的应用程序中使用Touch ID / Face ID。 Apple提供了一个名为“ 本地身份验证”的框架,用于将生物识别登录集成到您的应用程序中。 在您的应用程序中导入本地身份验证框架,即可开始使用。 您需要做的第一件事是创建LAContext类的引用,如下所示。 LAContext具有一个名为biometryType的属性,可让您在Face ID和Touch ID之间进行选择。 让上下文= LAContext() 下一步是检查当前设备是否支持生物特征认证。 您可以使用LAContext类提供的以下功能。 它返回布尔值,指示是否支持生物特征认证。 context.canEvaluatePolicy(.deviceOwnerAuthentication,错误:无) 最后,您可以调用validatePolicy方法以使用Touch ID / Face ID实施实际的身份验证。 有关实现,请参考以下代码段。 在您的应用程序中使用生物识别身份验证时有一些注意事项,我将在下面进行解释。 在正常情况下,您将通过API将用户凭据发送到服务器来对用户进行身份验证,并在成功从服务器进行验证后,将对用户进行身份验证。 在这里,服务器实际上是使用存储在数据库中的凭据来验证API中传递的凭据。 对于生物特征认证,验证发生在设备级别。 本地身份验证框架提供的context.evaluatePolicy仅返回成功或错误,指示用户的指纹或面部是否已在设备上注册。 这里要注意的重要一点是,如果用户的设备中配置了其他人的指纹,则他/她将获得成功的身份验证。 您可以添加免责声明,以通知用户相同的内容。 查看PayPal iOS应用程序以供参考。 由于生物特征识别登录不提供识别用户的选项,因此我们需要针对该场景找到替代方案。 一种方法是将用户凭据存储在应用程序内部,并通过Touch ID或Face […]

Okta身份验证第2部分

选择OAuth 2.0流程: 本部分可帮助您基于以下几点选择OAuth流程。 您需要的令牌类型。 您正在构建的客户端应用程序的类型。 您的应用程序需要ID令牌吗? 根据下表,您可以选择所需的OAuth流程。 您要建立什么样的客户? 下面的流程图可以快速帮助您确定要使用的OAuth流。 对于本机应用程序,Okta使用带有证明密钥的授权代码流进行代码交换(PKCE)。 带有PKCE流的授权码: 对于本机/移动应用程序,客户端机密无法存储在应用程序中,因为它很容易被公开。 因此,本机应用程序应使用代码交换证明密钥(PKCE),该密钥作为秘密使用,以确保授权代码流的安全。 验证码流程相似,不同之处在于它包含各种流程中的PKCE元素。 PKCE身份验证代码流要求您的应用程序生成一个称为“代码验证程序”的加密随机密钥。 从验证程序创建一个“代码质询”,并将其与授权码请求一起传递。 在访问令牌请求中发送了授权代码后,代码验证程序将作为请求的一部分发送。 授权服务器使用哈希算法重新计算代码挑战,并比较两个代码挑战和验证者匹配,以了解客户端发送的两个请求。 带有PKCE的授权代码流是标准代码流,在开头有一个额外的步骤,在结尾有一个额外的验证。 从总体上讲,该流程包含以下步骤: 您的应用程序将生成一个代码验证器,然后是一个代码质询。 您的应用程序将浏览器与生成的代码质询一起定向到Okta登录页面,然后用户进行身份验证。 Okta使用授权代码重定向回您的本机应用程序。 您的应用程序将此代码以及代码验证器发送到Okta。 Okta返回访问和ID令牌,以及可选的刷新令牌。 您的应用程序现在可以代表用户使用这些令牌来调用资源服务器(例如API)。 第3部分我将用示例解释OpenID Connect。 🙂 而已。 😃😃😃感谢您的阅读。 如果您想在社交媒体上关注我,这里有一些链接。 Linkedin , twitter , github 。 您可以 在这里 查看我的上一篇文章 。

使用playPORTAL进行身份验证

在本文中,我们将使用playPORTAL Swift SDK创建一个简单的iOS应用并集成playPORTAL的身份验证流程。 我们将展示您可以轻松使用playPORTAL的单点登录(SSO)将playPORTAL用户认证到您的iOS应用中,并可以访问playPORTAL的COPPA兼容社交网络。 首先,前往playPORTAL并创建您的playPORTAL开发者帐户以及一个新应用。 创建应用程序后,您将能够获取该应用程序的客户端ID和密码,这是您的应用程序发出播放PORTAL API所必需的。 您还需要为您的应用添加身份验证和配置文件范围。 范围决定了您的应用有权访问哪些信息; 在本文中,我们仅关注对用户进行身份验证并请求其个人资料。 现在,让我们打开Xcode,创建一个新项目,然后选择“ Single View App”。 首先,我们需要添加PPSDK-Swift作为外部依赖关系,我们将使用Cocoapods进行添加。 如果尚未安装,请使用以下命令全局安装Cocoapods: 须藤宝石安装cocoapods 然后,在项目的根目录中,通过运行添加Cocoapod支持 荚初始化 吊舱更新 这将在我们从现在开始使用的目录中创建一个.xcworkspace文件。 关闭当前的Xcode会话并打开此文件。 要添加SDK,请在项目导航器中的Pods目录下打开Podfile ,然后添加 pod“ PPSDK-Swift”,:git =>“ https://github.com/playportal-studio/PPSDK-Swift.git”,:tag =>“ 0.2.0” 在use_frameworks下! 最后,要安装SDK,请在终端中返回您的项目并运行 吊舱安装 组态 现在已经创建了项目,并且我们添加了PPSDK-Swift Pod,让我们将其配置为使用您在playPORTAL studio中创建的应用程序。 在您的项目中,创建一个名为Config.swift的文件。 转到您的帐户,获取创建的客户端ID和密码以及与应用程序关联的重定向URI。 我们将这些值以及环境添加到Config.swift中。 它应该看起来像这样的配置 注意 :重要的是,将配置变量设为私有,并且不要将其添加到版本控制中。 如果使用git,则应在项目的根目录(而不是Xcode)中创建一个.gitignore文件,并将Config.swift添加到其中。 这样,您的配置文件不会添加到提交历史记录中,也不会被推送到远程存储库中。 您还需要在Xcode中注册应用的重定向URI。 这样,用户通过SSO登录后,SSO便能够重定向回应用程序。 在项目导航器中单击您的根项目文件夹,然后转到“ 信息”选项卡。 底部的“ URL类型”部分是您将添加重定向URI的位置。 这是一个URL类型示例。 大! 不用进行配置,让我们编写一些代码! playPORTAL为您提供了一个现成的社交网络,因此您可以专注于应用程序的业务逻辑,而不必担心自己创建用户身份验证系统。 […]