<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Authsignal</title>
    <description>The latest articles on DEV Community by Authsignal (@authsignal).</description>
    <link>https://dev.to/authsignal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F867936%2F88e501d2-cebd-4ecd-8326-3d2d841d67ec.jpg</url>
      <title>DEV Community: Authsignal</title>
      <link>https://dev.to/authsignal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/authsignal"/>
    <language>en</language>
    <item>
      <title>Passkey iOS SDK - Authsignal</title>
      <dc:creator>Authsignal</dc:creator>
      <pubDate>Wed, 30 Aug 2023 21:38:13 +0000</pubDate>
      <link>https://dev.to/authsignal/passkey-ios-sdk-authsignal-418g</link>
      <guid>https://dev.to/authsignal/passkey-ios-sdk-authsignal-418g</guid>
      <description>&lt;h2&gt;
  
  
  What are passkeys?
&lt;/h2&gt;

&lt;p&gt;iCloud Keychain's public key credentials power Passkeys, making passwords obsolete. They utilize biometric verifications like Touch ID and Face ID on iOS, or a distinct confirmation on macOS to generate and authenticate accounts.&lt;/p&gt;

&lt;p&gt;When acting as the authenticator, your Apple device produces a distinct public-private key duo for each account established on a platform. The device keeps the private key while sending the public key to the server, referred to as the relying party.&lt;/p&gt;

&lt;p&gt;Authsignal &lt;a href="https://www.authsignal.com/features/passkeys"&gt;passkeys solution&lt;/a&gt; provides a back-end server also known as a WebAuthn server that facilitates the lifecycle of passkey management, check out this blog post that talks through the details &lt;a href="https://blog.authsignal.com/passkeys-apis-and-sdks-making-passkeys-implementation-easier-and-secure/"&gt;implementing passkeys&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now to the iOS implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  iOS passkeys prerequisites
&lt;/h2&gt;

&lt;p&gt;There are certain prerequisites in the iOS ecosystem that you need to ensure are setup before implementation, we list the following&lt;/p&gt;

&lt;p&gt;Passkeys are compatible with &lt;strong&gt;iOS 15&lt;/strong&gt; and later versions, and they synchronize through iCloud Keychain. For Autofill functionality, &lt;strong&gt;iOS 16&lt;/strong&gt; or higher is necessary.&lt;/p&gt;

&lt;p&gt;To use passkeys you must first setup an associated domain with the webcredentials service type.&lt;/p&gt;

&lt;p&gt;Host an apple-app-site-association file on the domain that matches your relying party:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GET&lt;/strong&gt; &lt;code&gt;https://&amp;lt;yourrelyingparty&amp;gt;/.well-known/apple-app-site-association&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The response JSON should look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
 "applinks": {},
 "webcredentials": {
     "apps": ["ABCDE12345.com.example.app"]
 },
 "appclips": {}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;ABCDE12345&lt;/code&gt; is your team id and com.example.app is your bundle identifier.&lt;/p&gt;

&lt;p&gt;In XCode under "Signing &amp;amp; Capabilities" add a webcredentials entry for your domain / relying party e.g. example.com:&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://portal.authsignal.com/users/sign_up"&gt;Sign up for an authsignal account&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/authsignal/authsignal-ios"&gt;Authsignal iOS Passkey GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cocoapods&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add the Authsignal cocoapod to your Podfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pod 'Authsignal', '~&amp;gt; 0.1.10'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Swift Package Manager&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add authsignal-ios to the dependencies value of your Package.swift.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dependencies: [
    .package(url: "https://github.com/authsignal/authsignal-ios.git", .upToNextMajor(from: "0.1.10"))
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Registering a new passkey
&lt;/h2&gt;

&lt;p&gt;Check out this youtube video of the &lt;a href="https://www.youtube.com/shorts/JUbscvNah0Y"&gt;iOS passkey registration flow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To register a new passkey, you first need to &lt;a href="https://docs.authsignal.com/learn/tracking-actions/overview#how-to-track-an-action"&gt;request a token via track&lt;/a&gt;. If the user is new, create a record for them in your own DB and pass their ID to Authsignal server-side to get a token, which can then be passed to the iOS SDK along with their username.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let result = await authsignal.passkey.signUp(token: initialToken, userName: userName)

if let error = result.error {
    print(error)
} else if let resultToken = result.data {
    // Pass this short-lived result token to your backend to validate that passkey registration succeeded
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Checkout the following for more steps on how to implement a &lt;a href="https://docs.authsignal.com/sdks/client/ios#authenticating-with-an-existing-passkey"&gt;passkey sign in flow&lt;/a&gt;, and the &lt;a href="https://docs.authsignal.com/sdks/client/ios#using-passkey-autofill"&gt;passkey autofill flow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That's it, easy.&lt;/p&gt;

</description>
      <category>passkeys</category>
      <category>programming</category>
      <category>ios</category>
      <category>mobile</category>
    </item>
    <item>
      <title>React Native Passkeys SDK</title>
      <dc:creator>Authsignal</dc:creator>
      <pubDate>Thu, 13 Jul 2023 02:05:35 +0000</pubDate>
      <link>https://dev.to/authsignal/react-native-passkeys-sdk-5bbm</link>
      <guid>https://dev.to/authsignal/react-native-passkeys-sdk-5bbm</guid>
      <description>&lt;p&gt;Wanting to implement passkeys in React Native? Authsignal has just released our &lt;a href="https://www.npmjs.com/package/react-native-authsignal"&gt;React Native SDK&lt;/a&gt; and &lt;a href="https://docs.authsignal.com/sdks/client/react-native"&gt;documentation&lt;/a&gt; to help you implement passkeys.&lt;/p&gt;

&lt;p&gt;Accompanying our React Native SDK is our &lt;a href="https://docs.authsignal.com/sdks/client/android"&gt;Android&lt;/a&gt; and &lt;a href="https://docs.authsignal.com/sdks/client/ios"&gt;iOS SDK&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>passkeys</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>Introducing Authsignal</title>
      <dc:creator>Authsignal</dc:creator>
      <pubDate>Wed, 13 Jul 2022 05:06:22 +0000</pubDate>
      <link>https://dev.to/authsignal/introducing-authsignal-2fia</link>
      <guid>https://dev.to/authsignal/introducing-authsignal-2fia</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/5RUq4cuDCGU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;👋 My name is Justin, On my first day of my last job, I walked into my office hoping to be greeted with high fives and fist pumps after my company's first big fund raise.&lt;/p&gt;

&lt;p&gt;I got the opposite, I walked into a burning fire 🔥 where my company (FinTech) didn't realize that they had been credential stuffed for 3 months straight! Just as I was walking through the door, they were facing the onslaught of account take overs. I spent the next 3 years learning about the world of scales ups and how it creates a big target for fraud.&lt;/p&gt;

&lt;p&gt;🚫 Problem&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It was very hard to observe fraud within your platform, there was no Google analytics for fraud, there were disparate reporting tools, a team of people who can write SQL, and two weeks later you have some insight on your risk. A little too late.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you were able to observe your risk, great! Your next move is to defend against the adversarial nature of fraud actors. You do this through implementing risk controls and risk management. Risk and ops quickly turned into "if" statements littered through the code base and our teams were tasked with constant requirements to tweak and modify parameters and rules, it was a resource drain and didn't empower business users. We found many platforms with the same problem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The last thing on the list to think about, and typically the most overlooked is the User Experience, after spending so much time on problem 1 and 2, most companies leave this to last and give a sub par experience for good customers, blocks, customer support wait times, frustrating conversations with support reps to verify who you are over email. Meanwhile cyber criminals exploit this knowing the more chaos they wreck into your system the more good customers get impacted.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;✅ Solution&lt;br&gt;
&lt;a href="https://www.authsignal.com/?utm_source=dev_to&amp;amp;utm_medium=post"&gt;Authsignal.com&lt;/a&gt; is a suite of tools for platforms to observe fraud risk in their systems in near real time, make operational adjustments to how they manage risk via a no code rules engine, and passwordless authenticator flows that can be used to step up customers or to sign transactions, all through a single API call, augmentable into your current stack, with no additional vendors/sales people to talk to.&lt;/p&gt;

&lt;p&gt;Authsignal solves a fragmented ecosystem of solutions through great Developer Experience (DX) via a lightning fast integration and out of the box Fraud Ops best practices so you don't have to do the heavy lifting.&lt;/p&gt;

&lt;p&gt;🚀 Vision&lt;br&gt;
A Fraud Ops operating system, delivering delightful trust and safety for customers.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
