|  |  | @ -101,9 +101,9 @@ ensure_client() { | 
			
		
	
		
			
				
					|  |  |  |       -s clientId="${CLIENT_ID}" \ | 
			
		
	
		
			
				
					|  |  |  |       -s protocol=openid-connect \ | 
			
		
	
		
			
				
					|  |  |  |       -s publicClient=false \ | 
			
		
	
		
			
				
					|  |  |  |       -s serviceAccountsEnabled=false \ | 
			
		
	
		
			
				
					|  |  |  |       -s serviceAccountsEnabled=true \ | 
			
		
	
		
			
				
					|  |  |  |       -s directAccessGrantsEnabled=true \ | 
			
		
	
		
			
				
					|  |  |  |       -s standardFlowEnabled=false \ | 
			
		
	
		
			
				
					|  |  |  |       -s standardFlowEnabled=true \ | 
			
		
	
		
			
				
					|  |  |  |       -s implicitFlowEnabled=false \ | 
			
		
	
		
			
				
					|  |  |  |       -s secret="${CLIENT_SECRET}" >/dev/null | 
			
		
	
		
			
				
					|  |  |  |     echo -e "${GREEN}✅ Client created${NC}" | 
			
		
	
	
		
			
				
					|  |  | @ -126,7 +126,14 @@ ensure_user() { | 
			
		
	
		
			
				
					|  |  |  |   uid=$(kcadm get users -r "${REALM_NAME}" -q username="${username}" | jq -r '.[0].id // empty') | 
			
		
	
		
			
				
					|  |  |  |   if [[ -z "${uid}" ]]; then | 
			
		
	
		
			
				
					|  |  |  |     echo -e "${YELLOW}📝 Creating user '${username}'...${NC}" | 
			
		
	
		
			
				
					|  |  |  |     uid=$(kcadm create users -r "${REALM_NAME}" -s username="${username}" -s enabled=true -i) | 
			
		
	
		
			
				
					|  |  |  |     uid=$(kcadm create users -r "${REALM_NAME}" \ | 
			
		
	
		
			
				
					|  |  |  |       -s username="${username}" \ | 
			
		
	
		
			
				
					|  |  |  |       -s enabled=true \ | 
			
		
	
		
			
				
					|  |  |  |       -s email="${username}@seaweedfs.test" \ | 
			
		
	
		
			
				
					|  |  |  |       -s emailVerified=true \ | 
			
		
	
		
			
				
					|  |  |  |       -s firstName="${username}" \ | 
			
		
	
		
			
				
					|  |  |  |       -s lastName="User" \ | 
			
		
	
		
			
				
					|  |  |  |       -i) | 
			
		
	
		
			
				
					|  |  |  |   else | 
			
		
	
		
			
				
					|  |  |  |     echo -e "${GREEN}✅ User '${username}' exists${NC}" | 
			
		
	
		
			
				
					|  |  |  |   fi | 
			
		
	
	
		
			
				
					|  |  | @ -169,6 +176,30 @@ main() { | 
			
		
	
		
			
				
					|  |  |  |   assign_role read-user   "${ROLE_READONLY}" | 
			
		
	
		
			
				
					|  |  |  |   assign_role write-user  "${ROLE_READWRITE}" | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |   # Validate the setup by testing one user authentication | 
			
		
	
		
			
				
					|  |  |  |   echo -e "${YELLOW}🔍 Validating setup by testing admin-user authentication...${NC}" | 
			
		
	
		
			
				
					|  |  |  |   sleep 2 | 
			
		
	
		
			
				
					|  |  |  |    | 
			
		
	
		
			
				
					|  |  |  |   local validation_result=$(curl -s -w "%{http_code}" -X POST "http://localhost:${KEYCLOAK_PORT}/realms/${REALM_NAME}/protocol/openid-connect/token" \ | 
			
		
	
		
			
				
					|  |  |  |     -H "Content-Type: application/x-www-form-urlencoded" \ | 
			
		
	
		
			
				
					|  |  |  |     -d "grant_type=password" \ | 
			
		
	
		
			
				
					|  |  |  |     -d "client_id=${CLIENT_ID}" \ | 
			
		
	
		
			
				
					|  |  |  |     -d "client_secret=${CLIENT_SECRET}" \ | 
			
		
	
		
			
				
					|  |  |  |     -d "username=admin-user" \ | 
			
		
	
		
			
				
					|  |  |  |     -d "password=admin123" \ | 
			
		
	
		
			
				
					|  |  |  |     -d "scope=openid profile email" \ | 
			
		
	
		
			
				
					|  |  |  |     -o /tmp/auth_test_response.json) | 
			
		
	
		
			
				
					|  |  |  |    | 
			
		
	
		
			
				
					|  |  |  |   if [[ "${validation_result: -3}" == "200" ]]; then | 
			
		
	
		
			
				
					|  |  |  |     echo -e "${GREEN}✅ Authentication validation successful${NC}" | 
			
		
	
		
			
				
					|  |  |  |   else | 
			
		
	
		
			
				
					|  |  |  |     echo -e "${RED}❌ Authentication validation failed with HTTP ${validation_result: -3}${NC}" | 
			
		
	
		
			
				
					|  |  |  |     echo -e "${YELLOW}Response body:${NC}" | 
			
		
	
		
			
				
					|  |  |  |     cat /tmp/auth_test_response.json 2>/dev/null || echo "No response body" | 
			
		
	
		
			
				
					|  |  |  |     echo -e "${YELLOW}This may indicate a setup issue that needs to be resolved${NC}" | 
			
		
	
		
			
				
					|  |  |  |   fi | 
			
		
	
		
			
				
					|  |  |  |   rm -f /tmp/auth_test_response.json | 
			
		
	
		
			
				
					|  |  |  |    | 
			
		
	
		
			
				
					|  |  |  |   echo -e "${GREEN}✅ Keycloak test realm '${REALM_NAME}' configured${NC}" | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | 
 |