Azure App Service에 대한 액세스 권한을 얻기 위해 AAD B2C를 사용하여 WPF 애플리케이션을 인증하는 방법

조슈아 스티븐스

나는 내가 작업중 인 프로젝트에 인증을 구현하려는 순간에 상당히 갇혀 있습니다. 이 프로젝트의 최종 목표는 두 개의 WPF 앱과 Azure에서 호스팅되는 웹 기반 앱을 갖는 것입니다. 하나의 WPF 앱은 관리자 용이고 다른 하나는 직원 용이며 마지막으로 고객 용 웹 앱입니다. 각 응용 프로그램은 공유 데이터베이스에 대해 하나의 Azure App Service에 연결되며 모든 사용자를 분리 할 수 ​​있도록 인증이 필요합니다. 인증을 위해 Azure Active Directory B2C를 사용할 계획입니다.

나는 WPF 앱 중 하나에서 며칠 동안 이것을 연구하고 구현하려고 시도했지만 전에 언급했듯이 꽤 갇혀 있습니다. 내가 이해하는 바에 따르면 WPF에 대한 B2C 인증을 수행하는 유일한 방법은 클라이언트 관리 인증을 이용하는 것입니다. Azure 자습서 사이트, 기타 SO 게시물 및 Azure Git Repos에 표시된 코드에 따라 다음 코드를 작성했습니다.

   System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
   authResult = await App.PublicClientApp.AcquireTokenAsync(App.ApiScopes,
       GetUserByPolicy(accounts, App.PolicySignUpSignIn), UIBehavior.SelectAccount, 
       string.Empty, null, App.Authority);
   Newtonsoft.Json.Linq.JObject payload = new Newtonsoft.Json.Linq.JObject();
   payload["access_token"] = authResult.AccessToken;
   MobileServiceClient msclient = new MobileServiceClient(App.AzureAppService);
   MobileServiceUser user = await msclient.LoginAsync(
        MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, payload);

모든 것이 훌륭하게 시작되고 로그인 정책을 표시 할 수 있습니다. 로그인 후 IdToken과 AccessToken이 제공됩니다. JObject를 만들고 여기에 액세스 토큰을 추가 한 후이를 사용하여 MobileServiceClient에 로그인하려고합니다. 그러나 그것이 내가 문제가있는 곳입니다. 내가 무엇을하든 내가 무엇을 시도하든 권한이 없다는 401 오류와 함께 예외가 발생합니다. 그리고 이것이 제가 지난 며칠 동안 집착 한 요점입니다.

분명히 저는 여기서 특별한 일을하고 있지 않으며 많은 사람들이 저보다 먼저이 일을했다고 생각합니다.하지만 저는이 시점을 지나칠 수없는 것 같고 누군가 제게 지침을 제공 할 수 있기를 바라고 있습니다. 내가 길을 벗어 났습니까? 내가 이것을 할 수있는 더 좋은 방법이 있습니까? Azure를 처음 사용하므로 제안이나 조언을 주시면 대단히 감사하겠습니다.

모두 감사합니다!

최신 정보:

내 Azure 설정이있는 방법은 다음과 같습니다.

앱 서비스 측에서

Client Id: "{Client Id of the AAD B2C App}"
Issuer URL: "login.microsoft.com{TennatName}.onmicrosoft.com/v2.0/.well-known/openid-configuration"
Allowed Token Audiences: "https://{App Service Name}.azurewebsites.net" (App Service URL)

B2C 측 :

Web and native client enabled
Web Reply URL: "https://{AppServiceName}.azurewebsites.net/.auth/login/add/callback"
Native App: I did not know what custom redirect URL to have so I have both
"{TennatName}.onmicrosoft.com://auth/" and 
"{AppServiceName}.azurewebsites.net/.auth/login/add/callback"

업데이트 2 :

My authority is login.microsoftonline.com/tfp{tenant}/{policy}/oauth2/v2.0/authorize
And my ApiScopes = { "https://{Tenant}/thisisatest/user_impersonation" };
크리스 패젯

클라이언트의 권한이로 설정된 https://{your-tenant-name}.b2clogin.com/tfp/{your-tenant-name}.onmicrosoft.com/{your-policy-name}/경우 앱 서비스의 발급자 URL은이 권한에 대한 메타 데이터를 참조해야합니다. https://{your-tenant-name}.b2clogin.com/tfp/{your-tenant-name}.onmicrosoft.com/{your-policy-name}/v2.0/.well-known/openid-configuration.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관