모든 개인 기고자들에게 감사드립니다
* 생산에 Ory의 주요 프로젝트 중 하나를 사용합니다.
쉬운 예제를 시작하려면 시작 문서로 가십시오.
Linux, MacOS, Windows 및 Docker에 Ory Kratos를 설치하는 방법과 소스에서 Ory Kratos를 구축하는 방법을 배우려면 Ory Developer 문서로 가십시오.
우리는 건축 설계와 관련하여 몇 가지 지침 원칙에 대한 Ory를 구축합니다.
Ory의 아키텍처는 Kubernetes, Cloudfoundry, OpenShift 및 유사한 프로젝트와 같은 컨테이너 오케스트레이션 시스템에서 가장 잘 작동하도록 설계되었습니다. 바이너리는 작고 (5-15MB), 모든 인기있는 프로세서 유형 (ARM, AMD64, i386) 및 시스템 종속성 (Java, Node, Ruby, Libxml, Libxml, Libxml)이없는 운영 체제 (FreeBsd, Linux, MacOS, Windows)에서 사용할 수 있습니다.
Ory Kratos는 클라우드 아키텍처 모범 사례에 따라 구축 된 API-First Identity 및 사용자 관리 시스템입니다. 거의 모든 소프트웨어 응용 프로그램이 셀프 서비스 로그인 및 등록, 다중 요소 인증 (MFA/2FA), 계정 복구 및 확인, 프로필 및 계정 관리를 처리 해야하는 핵심 사용 사례를 구현합니다.
Ory Hydra는 OpenID Certified ™ Oauth2 및 OpenID Connect 제공 업체로, 작은 "브리지"응용 프로그램을 작성하여 기존 ID 시스템에 쉽게 연결할 수 있습니다. 사용자 인터페이스 및 사용자 경험 흐름을 절대적으로 제어합니다.
Ory OathKeeper는 구성 가능한 인증, 승인 및 웹 서비스에 대한 요청 돌연변이 규칙을 갖춘 IAP (BeyondCorp/Zero Trust Identity & Access Proxy)입니다. JWT, 액세스 토큰, API 키, MTLS; 포함 된 주제가 요청을 수행 할 수 있는지 확인하십시오. 결과 콘텐츠를 사용자 정의 헤더 ( X-User-ID ), JSON 웹 토큰 등으로 인코딩하십시오!
Ory Keto는 정책 결정 지점입니다. 주제 (사용자, 응용 프로그램, 서비스, 자동차 등)가 리소스에 대한 특정 조치를 수행 할 수 있는지 여부를 결정하기 위해 AWS IAM 정책과 유사한 일련의 액세스 제어 정책을 사용합니다.
정체성 인프라를 실행하려면 위협 모델에 대한주의와 지식이 필요합니다.
보안 취약점을 찾았다 고 생각되면 포럼, 채팅 또는 Github에 공개적으로 게시하지 마십시오. Security.txt에서 책임있는 공개에 대한 모든 정보를 찾을 수 있습니다.
Ory의 서비스는 선택적으로 꺼질 수있는 요약 된 익명화 된 데이터를 수집합니다. 자세한 내용은 여기를 클릭하십시오.
가이드는 여기에서 제공됩니다.
HTTP API는 여기에 문서화되어 있습니다.
새로운 릴리스는 파괴 변경을 도입 할 수 있습니다. 이러한 변경 사항을 식별하고 통합 할 수 있도록 Changelog.md에 이러한 변경 사항을 문서화합니다. 업그레이드는 업그레이드 가이드를 방문하십시오.
kratos -h 또는 kratos help 실행하십시오.
우리는 모든 기부금을 장려하고 기여 가이드 라인을 읽도록 권장합니다.
1.16+가 필요하며 (테스트 스위트의 경우) :
Windows에서 Ory Kratos를 개발할 수는 있지만 모든 가이드는 Bash 또는 Zsh와 같은 Unix 쉘을 가정합니다.
설치하십시오
make format 사용하여 모든 코드를 포맷 할 수 있습니다. CI는 귀하의 코드가 올바르게 형식화되어 있는지 확인합니다.
실행할 수있는 세 가지 유형의 테스트가 있습니다.
짧은 테스트는 상당히 빠르게 실행됩니다. 한 번에 모든 코드를 테스트 할 수 있습니다.
go test -short -tags sqlite ./...또는 특정 모듈 만 테스트하십시오.
cd client ; go test -tags sqlite -short . 정기 테스트에는 데이터베이스 설정이 필요합니다. 테스트 스위트는 Docker와 직접 작업 할 수 있지만 (Ory/DockerTest 사용) 대신 MakeFile을 사용하는 것이 좋습니다. DockerTest를 사용하면 시스템의 Docker 이미지 수를 팽창시킬 수 있으며 매우 느립니다. 대신 우리는 다음을 권장합니다.
테스트하십시오
make test 실행할 때마다 make test 데이터베이스를 재현하는 것이 좋습니다. 매우 구체적인 것을 고치려고하고 항상 데이터베이스 테스트가 필요한 경우 성가신 일 수 있습니다. 이 경우 데이터베이스를 다음과 같이 초기화하는 것이 좋습니다.
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 ' 그런 다음 원하는만큼 자주 go test 실행할 수 있습니다.
go test -tags sqlite ./...
# or in a module:
cd client ; go test -tags sqlite . 일부 테스트는 비품을 사용합니다. 페이로드가 변경되면 다음과 같이 업데이트 할 수 있습니다.
make test-update-snapshots
이것은 짧은 테스트의 스냅 샷 만 업데이트됩니다. 모든 스냅 샷을 업데이트하려면 실행하십시오.
UPDATE_SNAPSHOTS=true go test -p 4 -tags sqlite ./...하위 폴더 에서이 명령을 실행할 수도 있습니다.
우리는 사이프러스를 사용하여 E2E 테스트를 실행합니다.
softwareupdate --install-rosetta --agree-to-license
E2E 테스트를 개발하는 가장 간단한 방법은 다음과 같습니다.
./test/e2e/run.sh -dev sqlite
다음을 사용하여 모든 테스트 (데이터베이스 포함)를 실행할 수 있습니다.
테스트 -E2E를 만드십시오
자세한 내용은 실행하십시오.
./test/e2e/run.sh
단일 테스트 만 실행하십시오
.only 하려는 테스트에.
예를 들어:
it . only ( 'invalid remote recovery email template' , ( ) => {
...
} )테스트의 하위 집합을 실행하십시오
test/e2e/ 폴더에있는 cypress.json 파일을 편집해야합니다.
testFiles 옵션을 추가하고 cypress/integration 폴더 내부에서 실행하도록 테스트를 지정하십시오. 예를 들어 network 테스트 만 추가합니다.
"testFiles" : [ " profiles/network/* " ],이제 실행 스크립트 또는 makefile을 사용하여 테스트를 다시 시작하십시오.
다음을 사용하여 개발 도커 이미지를 구축 할 수 있습니다.
Docker를 만드십시오
make sdkmake docs/apimake docs/swagger