Hello, I'm building an app and want to use kratos ...
# ory-selfhosting
h
Hello, I'm building an app and want to use kratos to register users. My goal is to use phone numbers as the user identifier (username essentially) and no password, only allow passkey login.
My identity schema
Copy code
{
  "$schema": "<http://json-schema.org/draft-07/schema#>",
  "title": "User",
  "type": "object",
  "properties": {
    "traits": {
      "type": "object",
      "properties": {
        "phone_number": {
          "type": "string",
          "title": "Phone Number",
          "format": "tel",
          "minLength": 10,
          "ory.sh/kratos": {
            "credentials": {
              "passkey": {
                "display_name": true
              }
            }
          }
        },
        "first_name": {
          "type": "string",
          "title": "First Name"
        },
        "last_name": {
          "type": "string",
          "title": "Last Name"
        },
        "verified": {
          "type": "boolean",
          "title": "Verified",
          "default": false
        }
      },
      "required": ["phone_number"],
      "additionalProperties": false
    }
  }
}
my kratos config.yaml
Copy code
version: v1.3.0

dsn: memory

serve:
  public:
    base_url: <http://localhost:4433/>
    cors:
      enabled: true
      allowed_origins:
        - <http://localhost:8081>
        - <http://localhost:19006>
      allowed_methods:
        - POST
        - GET
        - PUT
        - PATCH
        - DELETE
      allowed_headers:
        - Authorization
        - Content-Type
        - X-Session-Token
        - Cookie
      exposed_headers:
        - Content-Type
        - Set-Cookie
      allow_credentials: true
  admin:
    base_url: <http://localhost:4434/>

selfservice:
  default_browser_return_url: <http://localhost:8081/>
  allowed_return_urls:
    - <http://localhost:8081>
    - <http://localhost:19006>

  methods:
    passkey:
      enabled: true
      config:
        rp:
          id: localhost
          display_name: app
          origins:
            - <http://localhost:8081>
            - <http://localhost:19006>
    password:
      enabled: false

  flows:
    settings:
      ui_url: <http://localhost:8081/settings>
      privileged_session_max_age: 15m
    verification:
      enabled: true
      ui_url: <http://localhost:8081/verification>
      use: code
      after:
        default_browser_return_url: <http://localhost:8081/>
    recovery:
      enabled: true
      ui_url: <http://localhost:8081/recovery>
      use: code
    login:
      ui_url: <http://localhost:8081/login>
      lifespan: 10m
      after:
        passkey:
          hooks:
            - hook: revoke_active_sessions
    registration:
      ui_url: <http://localhost:8081/registration>
      lifespan: 10m
      before:
        passkey:
          hooks:
            - hook: session

log:
  level: debug
  format: text
  leak_sensitive_values: true

secrets:
  cookie:
    - NONPROD-INSECURE-SECRET

hashers:
  argon2:
    parallelism: 1
    memory: 128MB
    iterations: 2
    salt_length: 16
    key_length: 16

identity:
  default_schema_id: user
  schemas:
    - id: user
      url: file:///etc/config/kratos/identity.schema.json

# courier:
#   smtp:
#     connection_uri: <smtps://test:test@mailslurper:1025/?skip_ssl_verify=true>
I am still familiarizing with the ory kratos terminology, but I am able to create a registrationFlow, and when I attempt to update the registration flow with these options:
Copy code
{
  "flow": "f97a4537-c640-43c6-bdcc-b34310325d39",
  "updateRegistrationFlowBody": {
    "method": "passkey",
    "csrf_token": "redacted",
    "traits": {
      "phone_number": "+36306555555",
      "first_name": "",
      "last_name": ""
    }
  }
}
I get this error in container logs
Copy code
kratos-1  | time=2025-03-02T16:40:58Z level=info msg=Encountered self-service flow error. audience=audit error=map[message:I[#/] S[] could not find a strategy to sign up with stack_trace:                 e] webauthn:map[enabled:false]] regi
anything obvious I'm missing? I find the kratos.yaml documentation is not very comprehensive and I think my issue is probably there.
@chilly-king-10285