첫 커밋: 로컬 프로젝트 업로드
This commit is contained in:
8
baron-sso/docker/ory/kratos/courier-http.jsonnet
Normal file
8
baron-sso/docker/ory/kratos/courier-http.jsonnet
Normal file
@@ -0,0 +1,8 @@
|
||||
// Kratos courier HTTP payload을 backend로 전달하는 템플릿입니다.
|
||||
function(ctx)
|
||||
local data = if std.objectHas(ctx, "template_data") && ctx.template_data != null then ctx.template_data else {};
|
||||
{
|
||||
recipient: ctx.recipient,
|
||||
template_type: ctx.template_type,
|
||||
template_data: data,
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<body style="font-family: sans-serif; line-height: 1.6;">
|
||||
<h2>Baron SSO 로그인</h2>
|
||||
<p>아래 버튼을 클릭하면 로그인이 완료됩니다.</p>
|
||||
<!-- 운영 링크: https://app.brsw.kr/verify?loginId={{ .To }}&code={{ .LoginCode }} -->
|
||||
<p>
|
||||
<a href="http://localhost:5000/verify?loginId={{ .To }}&code={{ .LoginCode }}"
|
||||
style="display: inline-block; padding: 10px 16px; background: #1a1f2c; color: #fff; text-decoration: none; border-radius: 6px;">
|
||||
로그인 완료하기
|
||||
</a>
|
||||
</p>
|
||||
<p>또는 아래 로그인 코드를 입력해도 됩니다.</p>
|
||||
<p style="font-size: 18px; font-weight: bold;">{{ .LoginCode }}</p>
|
||||
<p style="color: #666; font-size: 12px;">요청하지 않았다면 이 메일을 무시해 주세요.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
Baron SSO 로그인
|
||||
|
||||
# 운영 링크: https://app.brsw.kr/verify?loginId={{ .To }}&code={{ .LoginCode }}
|
||||
|
||||
아래 링크를 클릭하면 로그인이 완료됩니다.
|
||||
http://localhost:5000/verify?loginId={{ .To }}&code={{ .LoginCode }}
|
||||
|
||||
로그인 코드: {{ .LoginCode }}
|
||||
|
||||
요청하지 않았다면 이 메일을 무시해 주세요.
|
||||
@@ -0,0 +1 @@
|
||||
Baron SSO 로그인 링크
|
||||
@@ -0,0 +1,4 @@
|
||||
[Baron 로그인] 로그인 링크
|
||||
# 운영 링크: https://app.brsw.kr/verify?loginId={{ .To }}&code={{ .LoginCode }}
|
||||
http://localhost:5000/verify?loginId={{ .To }}&code={{ .LoginCode }}
|
||||
코드: {{ .LoginCode }}
|
||||
126
baron-sso/docker/ory/kratos/identity.schema.json
Normal file
126
baron-sso/docker/ory/kratos/identity.schema.json
Normal file
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"$id": "https://schemas.ory.sh/presets/kratos/identity.email.schema.json",
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Person",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"traits": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"custom_login_ids": {
|
||||
"type": "array",
|
||||
"title": "Custom Login IDs",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"title": "E-Mail",
|
||||
"minLength": 3,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
},
|
||||
"code": {
|
||||
"identifier": true,
|
||||
"via": "email"
|
||||
}
|
||||
},
|
||||
"recovery": {
|
||||
"via": "email"
|
||||
},
|
||||
"verification": {
|
||||
"via": "email"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name"
|
||||
},
|
||||
"phone_number": {
|
||||
"type": "string",
|
||||
"title": "Phone Number",
|
||||
"minLength": 7,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
},
|
||||
"code": {
|
||||
"identifier": true,
|
||||
"via": "sms"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"department": {
|
||||
"type": "string",
|
||||
"title": "Department"
|
||||
},
|
||||
"affiliationType": {
|
||||
"type": "string",
|
||||
"title": "Affiliation Type"
|
||||
},
|
||||
"companyCode": {
|
||||
"type": "string",
|
||||
"title": "Company Code"
|
||||
},
|
||||
"role": {
|
||||
"type": "string",
|
||||
"title": "Role"
|
||||
},
|
||||
"tenant_id": {
|
||||
"type": "string",
|
||||
"title": "Tenant ID"
|
||||
},
|
||||
"displayname": {
|
||||
"type": "string",
|
||||
"title": "Display Name"
|
||||
},
|
||||
"completeForm": {
|
||||
"type": "boolean",
|
||||
"title": "Complete Form"
|
||||
},
|
||||
"team": {
|
||||
"type": "string",
|
||||
"title": "Team"
|
||||
},
|
||||
"taxCode": {
|
||||
"type": "string",
|
||||
"title": "Tax Code"
|
||||
},
|
||||
"familyCompany": {
|
||||
"type": "string",
|
||||
"title": "Family Company"
|
||||
},
|
||||
"familyUniqueKey": {
|
||||
"type": "string",
|
||||
"title": "Family Unique Key"
|
||||
},
|
||||
"personal": {
|
||||
"type": "boolean",
|
||||
"title": "Personal"
|
||||
},
|
||||
"grade": {
|
||||
"type": "string",
|
||||
"title": "Grade"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"email"
|
||||
],
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
}
|
||||
98
baron-sso/docker/ory/kratos/kratos.yml.template
Normal file
98
baron-sso/docker/ory/kratos/kratos.yml.template
Normal file
@@ -0,0 +1,98 @@
|
||||
version: v26.2.0
|
||||
|
||||
dsn: ${KRATOS_DSN}
|
||||
|
||||
serve:
|
||||
public:
|
||||
base_url: ${KRATOS_BROWSER_URL:-http://localhost:4433/}
|
||||
cors:
|
||||
enabled: true
|
||||
allowed_origins:
|
||||
- http://localhost:5000
|
||||
- http://localhost:5173
|
||||
- http://localhost:5174
|
||||
- http://localhost:5175
|
||||
- http://backend:3000
|
||||
- http://baron_backend:3000
|
||||
admin:
|
||||
base_url: ${KRATOS_ADMIN_URL:-http://localhost:4434/}
|
||||
|
||||
session:
|
||||
cookie:
|
||||
domain: ${KRATOS_SESSION_COOKIE_DOMAIN}
|
||||
same_site: Lax
|
||||
path: /
|
||||
|
||||
selfservice:
|
||||
default_browser_return_url: ${KRATOS_UI_URL:-http://localhost:5000/}
|
||||
allowed_return_urls:
|
||||
${KRATOS_ALLOWED_RETURN_URLS_YAML}
|
||||
|
||||
methods:
|
||||
password:
|
||||
enabled: true
|
||||
link:
|
||||
enabled: true
|
||||
code:
|
||||
enabled: true
|
||||
passwordless_enabled: true
|
||||
|
||||
flows:
|
||||
error:
|
||||
ui_url: ${KRATOS_UI_URL:-http://localhost:5000}/error
|
||||
settings:
|
||||
ui_url: ${KRATOS_UI_URL:-http://localhost:5000}/error?error=settings_disabled
|
||||
privileged_session_max_age: 15m
|
||||
recovery:
|
||||
ui_url: ${KRATOS_UI_URL:-http://localhost:5000}/recovery
|
||||
use: code
|
||||
verification:
|
||||
ui_url: ${KRATOS_UI_URL:-http://localhost:5000}/verification
|
||||
use: code
|
||||
logout:
|
||||
after:
|
||||
default_browser_return_url: ${KRATOS_UI_URL:-http://localhost:5000}/login
|
||||
login:
|
||||
ui_url: ${KRATOS_UI_URL:-http://localhost:5000}/login
|
||||
lifespan: 10m
|
||||
registration:
|
||||
ui_url: ${KRATOS_UI_URL:-http://localhost:5000}/registration
|
||||
lifespan: 10m
|
||||
|
||||
log:
|
||||
level: debug
|
||||
format: text
|
||||
leak_sensitive_values: true
|
||||
|
||||
secrets:
|
||||
cookie:
|
||||
- PLEASE-CHANGE-ME-I-AM-VERY-INSECURE
|
||||
cipher:
|
||||
- 32-LONG-SECRET-NOT-SECURE-AT-ALL
|
||||
|
||||
ciphers:
|
||||
algorithm: xchacha20-poly1305
|
||||
|
||||
hashers:
|
||||
algorithm: bcrypt
|
||||
bcrypt:
|
||||
cost: 8
|
||||
|
||||
identity:
|
||||
default_schema_id: default
|
||||
schemas:
|
||||
- id: default
|
||||
url: file:///etc/config/kratos/identity.schema.json
|
||||
|
||||
courier:
|
||||
template_override_path: /etc/config/kratos/courier-templates
|
||||
delivery_strategy: http
|
||||
http:
|
||||
request_config:
|
||||
url: http://baron_backend:3000/api/v1/auth/webhooks/kratos-courier
|
||||
method: POST
|
||||
body: file:///etc/config/kratos/courier-http.jsonnet
|
||||
headers:
|
||||
Content-Type: application/json
|
||||
smtp:
|
||||
connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true
|
||||
Reference in New Issue
Block a user