Skip to content

mcxross/zeroauth

Repository files navigation

ZeroAuth logo

ZeroAuth

Multi-platform zkLogin SDK Suite


ZeroAuth is a multi-platform SDK suite for zkLogin. It is designed to be easy to use, and easy to integrate into your existing projects. It offers a consistent native API across different platforms: use zkLogin with Objective-C on iOS/macOS, Kotlin/Java on Android, or C++/C on Windows and Linux.

The libraries meticulously adheres to the best practices delineated in RFC 8252 - OAuth 2.0 for Native Apps, employing Custom Tabs for authorization requests on Android and utilizing SFAuthenticationSession and SFSafariViewController for auth requests on iOS. To maintain stringent usability and security standards, WebView on Android, along with UIWebView and WKWebView on iOS, are explicitly unsupported, as elucidated in Section 8.12 of RFC 8252.


Build Status vcpkg Maven Central npm cocoapods License

badge-android badge-ios badge-js badge-jvm badge-linux badge-macos badge-windows

Table of Contents

Introduction

Each SDK is fundamentally designed with three primary components to enhance functionality and security: an OAuth and OpenID Connect client, a Zero Knowledge Proof (ZKP) client, and a Salt client. These essential elements are readily available across all platforms, offering you flexibility in managing your zkLogin flow. You can choose to delegate the authentication process or navigate through the steps independently, with the assurance that the intricate backend mechanisms are seamlessly handled for you. This structure not only ensures a robust security posture but also streamlines the developer experience, allowing for efficient integration and interaction within various client environments.

The zkLogin process is a concise, three-step sequence ensuring user privacy and security:

  • OAuth/OpenID Connect: Handles user authorization and token exchange, verifying identity securely.

  • Salt Client: Generates a unique 'salt,' anonymizing users to separate their identity from on-chain actions.

  • ZKP Client: Receives the 'salt' and creates a cryptographic proof, authenticating users without exposing personal data.

Features

  • Multi-platform support
  • Consistent API across platforms
  • Modular design
  • Easy to use and Integrates with existing projects

Usage

For how to use the respective SDKs, please see the documentation which provides a detailed guide on how-tos and best practices.

Contributing

All contributions to ZeroAuth are welcome. Before opening a PR, please submit an issue detailing the bug or feature. When opening a PR, please ensure that your contribution builds on the KMM toolchain, has been linted with ktfmt <GOOGLE (INTERNAL)>, and contains tests when applicable. For more information, please see the contribution guidelines.

License

    Copyright 2022 McXross

    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.

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages