TL;DR (English)
Course: From O11 to ODC / Tutorial: Grant Access to Users (koKR).
Following the tutorial as written, app login fails with "Invalid
credentials" even after end-user roles are correctly assigned in Development.
The (System) User entity had 0 records. Login worked only after inviting the
user via Invite User and setting a password from the invitation email. The
tutorial never mentions this prerequisite, and its portal screenshots are
outdated. Details in Korean below.
Note: some Post context fields are left blank because they are O11-specific and
have no ODC equivalent. Environment: ODC (OutSystems Developer Cloud) Personal
Edition, ODC Studio 1.7.x, Development stage.
---
Post context 필드는 O11 기준이라 해당 값이 없어 일부를 비워 두었습니다. 환경은
ODC(OutSystems Developer Cloud) Personal Edition, ODC Studio 1.7.x,
Development 스테이지입니다.
From O11 to ODC 과정의 「사용자에게 액세스 권한 부여」(Grant Access to Users)
문서에 나온 모든 단계를 그대로 수행했는데도 Directory·Vacations 앱에 로그인할 수
없었습니다. 원인을 찾아 해결은 했지만, 문서에 빠진 내용이 있어 공유합니다.
- 강의: From O11 to ODC
- 문서: 사용자에게 액세스 권한 부여 (Grant Access to Users), 한국어(koKR)
PDF 9페이지
- 환경: OutSystems Personal Edition / Development 스테이지 / ODC Studio 1.7.x
- 확인 일자: 2026-08-25 (KST)
■ 1. 무슨 일이 있었나
문서 12)단계는 "자격 증명으로 로그인합니다"라고만 안내합니다. 이 표현 때문에
OutSystems 계정 비밀번호로 앱에 로그인된다고 이해했는데, 실제로는 되지
않았습니다.
- 기대 동작 (문서 3p 시나리오): 로그인은 성공하고, 역할이 없으면
"You need other permissions to view this screen" 화면이 뜬다
- 실제 동작: 로그인 자체가 "Invalid credentials"로 실패하여, 문서가 설명한
화면에 도달조차 못 한다
확인한 내용은 이렇습니다.
- Directory·Vacations 두 앱의 end-user role을 Development 스테이지에 부여 완료.
포털에서 "Directly assigned"와 "Assigned to group" 컬럼 모두 체크 확인
- 동일 계정으로 ODC 포털 로그인은 정상 ("Last login: 10 minutes ago")
- ODC Studio에서 (System) User > Entity Data 조회 결과 "No records to show".
즉 역할은 있는데 앱 사용자 스토어에 계정 레코드가 아예 없는 상태
- 다른 주소를 Invite User로 초대하고 초대 메일에서 비밀번호를 설정한 뒤에야
로그인 성공
특히 짚고 싶은 점은, 실패한 계정이 ODC 포털 로그인에 쓰는 제 주 OutSystems
계정이라는 것입니다. 즉 수강자가 12)단계에서 자연스럽게 쓸 바로 그 계정이
실패하고, 새로 초대한 계정은 성공합니다. 강의가 상정한 정상 경로가 곧 실패
경로인 셈입니다.
한 줄로 정리하면 이렇습니다. ODC 포털 로그인 계정(관리자)과 앱 로그인 계정
(end-user)은 서로 다른 저장소를 쓰며, 두 계정이 자동으로 동일 사용자로
프로비저닝되지 않습니다. 그래서 포털 계정으로 앱에 로그인하면 인증 단계에서
막힙니다. (System) User가 0건이었던 것이 그 증거입니다.
■ 2. 문서와 실제 동작의 차이
찾아보니 제품 문서와도 앞뒤가 맞습니다. Self-registration 문서는 내장 identity
provider에 사용자를 생성하려면 StartUserRegistration을 명시적으로 호출해야
하며, 해당 기능이 "내장 identity provider에서만" 동작한다고 설명합니다. 즉
역할 부여는 계정 생성이 아니고, 계정은 포털 초대나 self-registration으로 별도
프로비저닝되어야 합니다. 강의 문서에는 이 전제가 전혀 없습니다.
같은 문서는 ODC 포털의 이메일 제공자 설정을 인증 코드 발송의 선행 조건으로
명시합니다. 제 경우 앱의 "Forgot your password?"로 메일이 오지 않아 포털 초대만
동작했던 것도 이것으로 설명될 수 있어 보입니다.
■ 3. 강의용 앱에는 계정을 등록할 경로가 없습니다
내장 사용자 스토어에 계정이 등록되는 방법은 세 가지입니다.
- ODC 포털 Invite User + 초대 메일에서 비밀번호 설정 (초대 수락 시 생성)
- built-in community provider 로그인 (첫 인증 시 자동 생성)
- Self-registration, StartUserRegistration 사용 (사용자 직접 가입 시 생성)
그런데 Directory·Vacations 로그인 화면에는 이메일과 비밀번호 입력란만 있고
"Continue with Built-in community provider" 옵션이 없습니다. 스토어에 레코드가
없는 수강자는 그 화면에서 더 나아갈 방법이 없습니다.
그 결과가 이 포럼에 나타나 있습니다. 통용되는 우회책이, 로그인 화면에 그 버튼이
있다는 이유만으로 관련 없는 Forge 앱(Database Access)을 설치해 거기서 인증하고
강의용 앱으로 돌아오는 방식입니다. 공식 강의의 한 단계에 대한 사실상의 해법이
이것입니다.
올바른 방법은 이미 "Modify the built-in login screen for external provider
login" 문서에 나와 있습니다.
■ 4. 문서 갱신도 필요합니다
- 4p 3)단계: 문서는 "MANAGE > Users" 사이드바 기준이지만, 현재 포털은
ADMIN(Organization, Subscription) / GOVERN(Users, End-user groups,
API clients, Organization roles, Identity providers) / MAINTAIN / CONFIGURE
구조입니다
- 5p 5)단계: 사용자 상세 화면이 "Organization access" / "End-user access"
탭으로 분리되었고 역할 할당 패널도 캡처와 다릅니다
- End-user groups(그룹 단위 권한 부여)는 문서에 아예 언급이 없어, 실제 화면의
"Assigned to group" / "Group name" 컬럼이 무엇인지 알 수 없습니다
■ 5. 문서 수정안 (그대로 반영 가능한 문장)
(1) 12)단계 앞에 전제 조건 추가
"이 단계에서 사용하는 자격 증명은 ODC 포털 로그인 계정이 아닙니다. 앱에
대해 미리 생성된 End-user 계정이 필요합니다. 계정이 없으면 GOVERN > Users
에서 Invite user로 초대한 뒤, 초대 메일의 링크에서 비밀번호를 설정하십시오."
(2) 12)단계 설명 보강
"로그인이 성공한 뒤 역할이 부여되지 않은 사용자에게는 'You need other
permissions to view this screen'이 표시됩니다. End-user 계정 자체가 없으면
로그인 단계에서 'Invalid credentials'가 발생합니다."
(3) 스테이지 주의 문구 추가
"앱 URL이 -dev이면 Development 스테이지의 사용자와 역할이 적용됩니다. 계정
초대와 역할 부여를 앱과 동일한 스테이지에서 수행하십시오."
(4) 역할 부여 경로를 두 갈래로 병기
- 사용자 중심: GOVERN > Users > (사용자) > End-user access > Manage roles >
Asset 선택
- 그룹 중심: GOVERN > End-user groups > (그룹) > End-user roles / Users
(5) 랩 흐름 제안
문서가 설명하는 시나리오를 그대로 재현하려면, 수강자 본인 계정이 아니라
테스트용 end-user를 하나 만들어 진행하는 편이 안정적입니다. 이 랩의 주제가
"다른 사용자에게 권한을 부여"하는 것이므로 관리자와 대상 사용자를 분리하면
학습 목표도 더 선명해집니다.
1) Invite user로 end-user 생성 (Development 스테이지)
2) 역할을 부여하지 않은 상태로 -dev URL에 로그인
-> "You need other permissions to view this screen" 확인
3) 역할 부여 후 재로그인 -> 대시보드 진입 확인
■ 질문
1. 이 강의용 앱들에서 계정을 프로비저닝하는 지원 경로가 포털 초대뿐입니까?
아니면 강의가 상정한 다른 경로가 있습니까?
2. 이 문서의 영문 원문도 동일한 내용입니까? 동일하다면 수정 대상은 한국어
번역이 아니라 원문 문서일 것입니다.
3. 강의용 앱 로그인 화면에 built-in community provider 옵션을 포함시키거나,
최소한 12)단계에서 관련 문서로 링크를 걸어주실 수 있습니까? 현재는 수강자가
강의를 마치려고 제3의 앱을 설치하는 상황입니다.
참고로 로그인 실패는 항상 "Invalid credentials"로 고정이었고, Directory와
Vacations 두 앱 모두 동일했습니다. "You need other permissions to view this
screen" 화면에는 한 번도 도달하지 못했습니다. (System) User 레코드가 0건이면
인증 단계에서 조회할 계정이 없으므로 권한 검사 단계까지 진입하지 못하기
때문입니다. 즉 문서가 설명하는 시나리오는 현재 랩 흐름으로는 재현 자체가
불가능했습니다.
첨부한 스크린샷 3장은 각각 로그인 실패 화면, 역할 할당이 완료된 End-user access
탭, 그리고 레코드가 0건인 (System) User 엔티티입니다.
Pinning the concrete doc-fix proposal and the state matrix here for visibility (details in section 5 of the post).
본문 ■5의 핵심을 요약하고, 상태별 재현 결과를 표로 정리합니다.
상태별 재현 결과
(System) User 레코드 역할 결과
없음 부여됨 Invalid credentials — 인증 단계에서 실패 (확인)
있음 부여됨 대시보드 진입 (확인, Invite user 계정)
있음 없음 You need other permissions to view this screen (미확인)
세 번째 상태가 문서 3p 시나리오가 설명하는 화면인데, 계정이 없으면 그 상태에 도달할 방법 자체가 없습니다. Directory와 Vacations 두 앱 모두 동일했습니다.
문서 수정 제안 — 12)단계 앞에 아래 순서를 추가
역할 부여 경로 (현행 IA)
스테이지 주의 — 앱 URL이 -dev이면 Development 스테이지의 사용자와 역할이 적용됩니다. 초대와 역할 부여를 앱과 같은 스테이지에서 수행해야 합니다.
핵심 — ODC 포털 로그인 계정과 앱 end-user 계정은 서로 다른 저장소를 씁니다.
Hi @HyunHo Oh ,
Probably the practice applications are outdated, please check this discussion for a fix: A solution for the PE Login Wall: End-User Access to Apps in Personal Edition .