2016-09-05 3 views
1

OAuth2 용으로 ADFS3.0을 설치하면 클라이언트 -AP에서 "액세스 토큰"을 얻게됩니다. 이 같은adfs (oauth2) 토큰 유효성 검사 하우투?

somethig에 :

HTTP/1.1 200 OK 
Content-Type: application/json;charset=UTF-8 

{ 
    "access_token":"<access_token>", 
    "token_type":"bearer", 
    "expires_in":3600 
} 

토큰은 헤더 부분, 페이로드 및 서명으로 구성되어 있습니다.

이제 토큰과 함께 리소스 서버로 요청을 보냈습니다. 그리고 내 리소스 서버에서 ADFS (인증 서버 및 IDP)에 대한 토큰의 유효성을 검사하려고합니다.

CertificateType : Token-Signing 
IsPrimary  : True 
StoreLocation : CurrentUser 
StoreName  : My 
Thumbprint  : xyz 

방법이 작업을 수행 할 수 있습니다

이 ADFS 내 인증서는 무엇입니까?

업데이트 : 토큰에 대한 몇 가지 정보 :

헤더 :

{ 
    "typ": "JWT", 
    "alg": "RS256", 
    "x5t": "abc" 
} 

페이로드 :

{ 
    "aud": "https://serverurl", 
    "iss": "http://.../adfs/services/trust", 
    "iat": 1473063317, 
    "exp": 1473066917, 
    "auth_time": "2016-09-05T08:15:17.875Z", 
    "authmethod":  "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", 
    "ver": "1.0", 
    "appid": "some-uid" 
} 

서명 :

{ 
    RSASHA256(
    base64UrlEncode(header) + "." + 
    base64UrlEncode(payload), 
    Ceritifate/secret 
} 

계획 권한을 부여 흐름 (짧은 버전 없음 인증 부여 코드 세부 사항) :

우리는 ADFS (인증 + IDP)에서 토큰을 요청하는 우리의 클라이언트 응용 프로그램 (발행자) 다음 토큰 + 요청이 전송이 리소스 서버와 리소스 서버는 ADFS에 대한 토큰의 유효성 검사를 수행해야합니다. sigature/token이 유효한 경우 ADFS의 일부 끝점이 누락되었습니다. 애덤 즈는 ADFS 서버의/adfs/oauth2 끝점입니다 (여기서 내가 액세스 권한을 얻었습니다). 그러나 Microsoft의 문서가 다소 부족합니다 ...

+0

ADFS의 OAuth 2 구현에 대한 Microsoft 설명서가 존재하지 않습니다. 어떻게이 문제를 해결 했습니까? 나는 같은 질문을 가지고있다. –

답변

0

서명을 확인하려고합니다.

해당하는 경우 OAuth2 : Verifying the Azure AD JWT signature을 참조하십시오.

기본적으로 "잘 알려진/openid 구성"을 사용하여 "공통/검색/키"를 얻은 다음 그로부터 인증서를 작성하십시오.

+0

서명의 유효성을 입증하는 것이 충분하다면 나는 그렇다고 대답합니다. 그러나 나는이 링크를 전혀 이해하지 못한다는 것을 인정해야한다. Azure와의 연결이 필요합니까? 유효성 검사를 위해 자체 ADFS 서버를 사용할 수없는 이유는 무엇입니까? – Gobliins

+0

아니요 - 하늘빛 부분을 잊어 버리십시오. 단지 서명을 확인하는 방법 일뿐입니다. 올바른 대상인지, 예상 발급자인지, 토큰이 만료되었는지 등도 확인하십시오. RFC 7662를 참조하십시오. – nzpcmad

+0

자신의 조직의 ADFS를 사용할 수 있습니다. 유일한 부분은 앱에서 타사 인증을 사용할 때 조직에 속한 Identity 서버에서 제공하는 토큰을 앱에서 확인할 수 있도록 조직의 ID 서버를 신뢰해야한다는 것입니다. 주로 신뢰해야하는 발급 기관입니다. –