2014-12-16 3 views
0

Rails에 AWS Federation 프록시를 작성하고 있습니다. 즉, 로컬 ActiveDirectory에서 net-ldap을 사용하는 그룹을 찾아서 목록과 비교하여 일치하는 항목을 찾으려고합니다.테이블의 값에 대한 구문 해시

[#<Net::LDAP::Entry:0x000000048cfdd0 @myhash={:dn=>["CN=Username,OU=Support,OU=mycompany ,OU=Organisation,DC=mycompany,DC=com"], :memberof=>["CN=My AWS Groupname,CN=Receiver,CN=Users,DC=mycompany,DC=com"]}>] 

지금 나는이 해시를 분석하고 로컬 "그룹"테이블에 일치하는 항목을보고 싶지 : 내 NetLDAP-의 SearchResult이 해시입니다. 모양은 다음과 같습니다.

Name    AWS-Role 
My AWS-Groupname Some Group 
AWS-Othergroup  Some Other-Group 

나는 그룹 모델을 가지고 있습니다. 모범 사례 접근 방식이란 무엇입니까? 나는 전에 이런 짓을 한 적이 없어. 여기 정규식을 사용합니까? 모든 테이블을 통해 그룹을 반복합니까? 이 작업을 수행하는 방법은 무엇입니까? 자세한 내용은 편집

난 당신이에서 LDAP 검색 결과를 얻을 수 어디에 내가 알고하지 않기 때문에, 여기에 몇 가지를 가정 할 것,하지만 해시를 믿고있어

+0

다음은 해시에서 어떻게 끝나야하는지에 대한 이전 게시물입니다. http://stackoverflow.com/questions/27185151/netldap-sort-results-in-a-sane-way –

답변

1

은 다음과 같습니다

편집 : 추가 정보를 기반으로 :

// Example 
require 'net-ldap' 

entry = Net::LDAP::Entry.new 
entry.dn = ["CN=Username,OU=Support,OU=mycompany ,OU=Organisation,DC=mycompany,DC=com"] 
entry[:memberof] =["CN=My AWS Groupname,CN=Receiver,CN=Users,DC=mycompany,DC=com"] 
name = entry.memberof.first.split(',').first.gsub('CN=', '') 

그리고 당신이 "그룹"테이블에 매핑 된 모델이라는 그룹이 있으리라 믿고, 당신은 이런 식으로 뭔가를 할 수 :

Group.where(name: name).any? 

결과를 찾으면 표가 일치 함을 의미합니다. 그러나 이것은 테이블 구조와 해시에 완전히 달려 있습니다. 귀하의 질문에 적절하게 대답하기 위해, 당신은 레일스에 어떤 객체가 있는지, 그리고 해시의 구조가 어떻게 보이는지 알아야합니다.

편집 : 수신 된 피드백을 기반으로 제 대답이 업데이트되었습니다. 자신의 위험 부담으로 코드를 사용하십시오.

+0

좋은 대답을보기 좋다. –

+0

그 좋은 대답에 감사드립니다. 여기에 더 많은 정보가 있습니다. –

+0

은 제공된 피드백을 기반으로 제 응답을 업데이트했습니다. –

관련 문제