2017-02-01 8 views
0

웹 서비스에서 JSON으로 반환 할 특정 클라이언트 데이터를 식별하려고합니다. 이것이 올바른 길인지 확신 할 수 없으며 조언을 많이 듣고 싶습니다.웹 서비스가 멀티 테넌트 데이터베이스와 상호 작용하는 좋은 방법입니까?

가 현재 작동하는 방법입니다 : 자신이 속한 적절한 COMPANY_ID 사용자를위한

  1. 데이터베이스 테이블.
  2. 로그인시 인증 서비스는 토큰 페이로드에 company_id가있는 JWT 토큰을 발행합니다.
  3. 클라이언트가 토큰과 함께 HTTP 요청을 보내면 서비스가 토큰의 유효성을 확인한 다음 특정 경로가 WHERE company_id = company_id_in_token을 수행하는 SQL로 데이터를 반환합니다.

내가 실행 해요 붉은 깃발은 다음과 같습니다 토큰 페이로드

  1. 갖는 사용자 데이터. SSL은이를 무효화 할 것이지만 나쁜 설계가 걱정됩니다.
  2. 필터링을 위해 테이블마다 에 company_id 열을 포함해야합니다.

제발, 제게 새로운 것을 찢어달라고 부탁드립니다.

+0

toke 링크를 다시 user_id로 설정해야합니까? 그걸 사용하여 company_id를 얻을 수 없습니까? 모든 단일 테이블에 company_id가있는 것과 마찬가지로 company_id없이 조인 할 수있는 경우 회사 테이블에 조인하는 SQL 조인이 쿼리에 포함될 수 있습니다. 그런 다음 해당 테이블에 열을 포함 할 필요가없는 경우 – Dijkgraaf

답변

0

OpenID 사양을 참조하는 경우 id_token을 보내지 만 나중에 확인을 위해 서명합니다. 또한 upn 또는 sub claim을 사용할 수있는 경우이 데이터에서 입주자를 추론 할 수 있습니다. 그러나 사용자 질문이 다른 임차인을 대신하여 일하는 경우에는 특수 헤더가 임차인을 추론해야하며, 예를 들어 상황 별 임차인은 상황에 따라 임차인을 포함하는 헤더 일 수 있습니다.

tenant id 열이있는 경우 핵심 비즈니스 오브젝트 테이블에 tenant id 열이있는 것이 좋습니다. 핵심 비즈니스 오브젝트에 종속적 인 테이블에는 임차인 ID 컬럼이 없으 G로, 그 자체로는 아무런 의미도 전달하지 않기 때.입니다.

HTH