{"id":16061717,"url":"https://github.com/mattmassicotte/swift-passkeys","last_synced_at":"2025-03-18T05:30:37.585Z","repository":{"id":148114639,"uuid":"581809682","full_name":"mattmassicotte/swift-passkeys","owner":"mattmassicotte","description":"An experiment building passkey-based auth with Swift and AWS","archived":false,"fork":false,"pushed_at":"2023-01-28T21:48:12.000Z","size":46,"stargazers_count":18,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-16T17:12:49.702Z","etag":null,"topics":["aws","swift","webauthn"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mattmassicotte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-24T12:21:42.000Z","updated_at":"2025-02-18T15:34:14.000Z","dependencies_parsed_at":"2023-04-01T07:34:42.132Z","dependency_job_id":null,"html_url":"https://github.com/mattmassicotte/swift-passkeys","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattmassicotte%2Fswift-passkeys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattmassicotte%2Fswift-passkeys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattmassicotte%2Fswift-passkeys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattmassicotte%2Fswift-passkeys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattmassicotte","download_url":"https://codeload.github.com/mattmassicotte/swift-passkeys/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244164570,"owners_count":20408953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","swift","webauthn"],"created_at":"2024-10-09T04:09:44.786Z","updated_at":"2025-03-18T05:30:37.580Z","avatar_url":"https://github.com/mattmassicotte.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# swift-passkeys\nAn experiment building passkey-based auth with Swift and AWS\n\n## The Parts\n\n[AWS Cognito](https://aws.amazon.com/cognito/) is the user database. Cognito can do all kinds of things, including built-in support for Sign in with Apple. But, as of right now, it does not support WebAuthn. So, custom hooks and a [WebAuthn package][webauthn-package] are required and made this project much more complex.\n\n[AWS API Gateway](https://aws.amazon.com/api-gateway) is used as an HTTP server.\n\nRoutes:\n\n- `GET /.well-known/apple-app-site-association`\n- `GET /makeCredential?username=xyz`\n- `POST /makeCredential?username=xyz`\n\n[AWS Lambda](https://aws.amazon.com/lambda/) is used to run the Swift code for the HTTP server responses and Cognito hooks.\n\n[AWS CloudFormation][cloudformation] is used to set up and configure the AWS resources.\n\n## Manual Configuration\n\nI had a goal of making this all zero-cost. Unforutnately, I ran into a snag. Apple's AuthenticationServices framework requires a domain that serves `/.well-known/apple-app-site-association`. And a top-level path requires using a custom domain with API Gateway. This is possible do with CloudFormation, but requires a Route 53 hosted zone, which costs 0.50$ per month. To get around this, I left the custom domain for API Gateway manual.\n\n## Code of Conduct\n\nEveryone interacting in the rake-remote-file project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/mattmassicotte/rake-remote-file/blob/master/CODE_OF_CONDUCT.md).\n\n[cloudformation]: https://aws.amazon.com/cloudformation\n[webauthn-package]: https://github.com/swift-server/webauthn-swift","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattmassicotte%2Fswift-passkeys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattmassicotte%2Fswift-passkeys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattmassicotte%2Fswift-passkeys/lists"}