나는 내가 작업중 인 프로젝트에 인증을 구현하려는 순간에 상당히 갇혀 있습니다. 이 프로젝트의 최종 목표는 두 개의 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] 삭제
몇 마디 만하겠습니다