2017-02-03 9 views
0

다음 컨텍스트로 프로토 타입을 작성합니다. 신뢰 당사자로ADFS + IdentityServer3 + Mobile + MVC

  • 두 클라이언트 응용 프로그램 (MVC & 모바일)
  • IdentityServer3를 SAML 지원을 제공하기 위해
  • ID 공급자로 ADFS 3.0
  • IdentityServer3.WsFederation 플러그인

MVC의 사이드가 완성되었지만 모바일 측에 접근하는 방법을 모르겠습니다.

이전에 웹 API와 ADFS의 "adfs/services/trust/13/usernamemixed"엔드 포인트를 사용했습니다. 이로 인해 모바일 장치는 ADFS의 끝점을 사용하여 사용자를 인증 한 API에 자격 증명을 보낼 수있었습니다. 그런 다음 JWT 토큰을 모바일 앱에 반환했습니다.

우리는 Idp에서 SAML 토큰 (ADFS 또는 다른 Idp 일 수 있음)을 받아야하지만 Google 앱은 토큰 유형에 대해 불가지론합니다.

두 가지 질문이 있습니다.

  1. IdentityServer3는 위의 종단점을 사용하여 ws 트러스트를 지원하지 않습니다 (알고있는 한). 따라서 모바일 장치 로그인에 대해 올바른 시나리오는 무엇입니까?
  2. IdentityServer3이 클라이언트 응용 프로그램의 SAML 토큰을 JWT로 변환하는 것을 처리 할 수 ​​있으므로 WsFederation 플러그인이 필요합니까?
+0

SAML 토큰이 필요한 경우 어떻게 당신은 불가지론 자입니까? –

+0

우리는 JWT 또는 SAML 토큰을 사용할 수 있습니다. – user1424660

답변

0

우선 SAML이 클라이언트를 브라우저로 가정하므로 모바일 장치 (특히 기본 응용 프로그램) 용으로 SAML을 사용하지 않는 것이 좋습니다. 모바일 앱에서는 인증을위한 브라우저를 열어 어떤 느낌이 가장 좋지 않습니다. 모바일 장치 용으로 OpenID/Oauth를 사용할 것을 제안합니다.

Idp는 WS-Fed, SAML 2.0 또는 OAuth와 같은 다중 로그인 프로토콜을 지원할 수 있습니다. 관련 프로토콜을 사용하는 클라이언트에 따라 다릅니다.

WS - IdentityServer3와 함께 제공되는 OWIN Middleware는이를 달성하는 데 도움이됩니다.

using Microsoft.Owin.Security.WsFederation; 

     app.UseWsFederationAuthentication(
        new WsFederationAuthenticationOptions 
         { 
          Wtrealm = "https://localhost:44309/core", //identityserver3 
          Wreply = "replyaddress", 
          MetadataAddress = "https://localhost/federationmetadata.xml", 
          AuthenticationType = "adfs", 
          Caption = "ADFS", 
          SignInAsAuthenticationType = "sometype" 
         }); 

위의 코드는 다시 위에서 언급 한 Wreply 주소로 리디렉션합니다 성공적인 인증 후, ADFS 로그인 화면으로 이동, 그것은 SAML 1.1 응답을 retuns. 그것을 파싱하고 사용해야합니다.