Un grand merci à tous les contributeurs individuels
* Utilise l'un des principaux projets d'Ory en production.
Pour commencer avec quelques exemples faciles, rendez-vous sur la documentation de démarrage.
Rendez-vous sur la documentation ORY Developer pour apprendre à installer Ory Kratos sur Linux, MacOS, Windows et Docker et comment construire Ory Kratos à partir de la source.
Nous construisons ORY sur plusieurs principes directeurs en ce qui concerne notre conception d'architecture:
L'architecture d'Ory est conçue pour fonctionner le mieux sur un système d'orchestration de conteneurs tels que Kubernetes, CloudFoundry, OpenShift et des projets similaires. Les binaires sont petits (5-15 Mo) et disponibles pour tous les types de processeurs populaires (ARM, AMD64, I386) et les systèmes d'exploitation (FreeBSD, Linux, MacOS, Windows) sans dépendances du système (Java, Node, Ruby, LibXML, ...).
Ory Kratos est un système d'identité et de gestion des utilisateurs API-First qui est construit en fonction des meilleures pratiques d'architecture cloud. Il met en œuvre des cas d'utilisation de base que presque toutes les applications logicielles doivent traiter: Connexion et enregistrement en libre-service, authentification multi-facteurs (MFA / 2FA), récupération et vérification des comptes, profil et gestion des comptes.
Ory Hydra est un fournisseur OpenID Certified ™ OAuth2 et OpenID Connect qui se connecte facilement à tout système d'identité existant en écrivant une petite application "Bridge". Il donne un contrôle absolu sur l'interface utilisateur et les flux d'expérience utilisateur.
Ory Oathkeeper est un proxy de l'identité et d'accès au-delà de la confiance (IAP) avec des règles de mutation d'authentification, d'autorisation et de demande configurables pour vos services Web: authentification JWT, jetons d'accès, touches API, MTLS; Vérifiez si le sujet contenu est autorisé à effectuer la demande; Encoder le contenu résultant dans des en-têtes personnalisés ( X-User-ID ), des jetons Web JSON et plus encore!
Ory Keto est un point de décision politique. Il utilise un ensemble de politiques de contrôle d'accès, similaires aux politiques AWS IAM, afin de déterminer si un sujet (utilisateur, application, service, voiture, ...) est autorisé à effectuer une certaine action sur une ressource.
La gestion de l'infrastructure d'identité nécessite une attention et une connaissance des modèles de menace.
Si vous pensez avoir trouvé une vulnérabilité de sécurité, veuillez vous abstenir de le publier publiquement sur les forums, le chat ou le github. Vous pouvez trouver toutes les informations pour la divulgation responsable dans notre sécurité.txt.
Les services d'Ory collectent des données anonymisées résumées qui peuvent éventuellement être désactivées. Cliquez ici pour en savoir plus.
Le guide est disponible ici.
L'API HTTP est documentée ici.
Les nouvelles versions pourraient introduire des changements de rupture. Pour vous aider à identifier et à intégrer ces changements, nous documentons ces changements dans le ChangeLog.md. Pour la mise à niveau, veuillez visiter le guide de mise à niveau.
Exécutez l'aide kratos -h ou kratos help .
Nous encourageons toutes les contributions et vous encourageons à lire nos directives de contribution
Vous avez besoin de aller 1.16+ et (pour les suites de test):
Il est possible de développer Ory Kratos sur Windows, mais sachez que tous les guides supposent une coquille Unix comme Bash ou Zsh.
faire l'installation
Vous pouvez formater tout le code à l'aide make format . Notre CI vérifie si votre code est correctement formaté.
Il existe trois types de tests que vous pouvez exécuter:
Les tests courts se déroulent assez rapidement. Vous pouvez soit tester tout le code à la fois
go test -short -tags sqlite ./...ou testez juste un module spécifique:
cd client ; go test -tags sqlite -short . Les tests réguliers nécessitent une configuration de base de données. Notre suite de tests est capable de travailler directement avec Docker (en utilisant Ory / DockerTest), mais nous encourageons à utiliser le MakeFile à la place. L'utilisation de DockerTest peut gonfler le nombre d'images Docker sur votre système et est assez lente. Au lieu de cela, nous vous recommandons de faire:
faire un test
Veuillez noter que make test recrée les bases de données chaque fois que vous exécutez make test . Cela peut être ennuyeux si vous essayez de corriger quelque chose de très spécifique et que vous avez besoin des tests de base de données tout le temps. Dans ce cas, nous vous suggérons d'initialiser les bases de données avec:
make test-resetdb
export TEST_DATABASE_MYSQL= ' mysql://root:secret@(127.0.0.1:3444)/mysql?parseTime=true '
export TEST_DATABASE_POSTGRESQL= ' postgres://postgres:[email protected]:3445/kratos?sslmode=disable '
export TEST_DATABASE_COCKROACHDB= ' cockroach://[email protected]:3446/defaultdb?sslmode=disable ' Ensuite, vous pouvez exécuter go test aussi souvent que vous le souhaitez:
go test -tags sqlite ./...
# or in a module:
cd client ; go test -tags sqlite . Certains tests utilisent des luminaires. Si les charges utiles changent, vous pouvez les mettre à jour avec:
make test-update-snapshots
Cela ne mettra à jour que les instantanés des courts tests. Pour mettre à jour tous les instantanés, exécutez:
UPDATE_SNAPSHOTS=true go test -p 4 -tags sqlite ./...Vous pouvez également exécuter cette commande à partir d'un sous-dossier.
Nous utilisons Cypress pour exécuter nos tests E2E.
softwareupdate --install-rosetta --agree-to-license
Le moyen le plus simple de développer des tests E2E est:
./test/e2e/run.sh --dev sqlite
Vous pouvez exécuter tous les tests (avec des bases de données) en utilisant:
faire du test-e2e
Pour plus de détails, exécutez:
./test/e2e/run.sh
Exécutez uniquement un test singulier
Ajoutez .only Sans le test que vous souhaitez exécuter.
Par exemple:
it . only ( 'invalid remote recovery email template' , ( ) => {
...
} )Exécuter un sous-ensemble de tests
Cela nécessitera l'édition du fichier cypress.json situé dans le dossier test/e2e/ .
Ajoutez l'option testFiles et spécifiez le test pour exécuter à l'intérieur du dossier cypress/integration . À titre d'exemple, nous ne ajouterons que les tests network .
"testFiles" : [ " profiles/network/* " ],Maintenant, recommencez les tests à l'aide du script d'exécution ou de MakeFile.
Vous pouvez créer une image de docker de développement en utilisant:
faire docker
make sdkmake docs/apimake docs/swagger