My MVC WebApp को Azure Paas पर तैनात किया गया है और Azure AD का उपयोग करके सुरक्षित किया गया है। प्रमाणीकरण सेटअप अपने आधार के रूप में नीचे दिए गए नमूना कोड का उपयोग करता है और यह स्थानीयहोस्ट में IISExpress या IIS के साथ काम कर रहा है।

https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect

लेकिन यह Azure में परिनियोजन के बाद काम नहीं कर रहा है। भले ही उपयोगकर्ता ठीक से प्रमाणित करेगा, प्राधिकरण कोड प्राप्त प्रतिनिधि को कभी भी लागू नहीं किया जाता है।

यह स्टार्टअप कोड है जो प्रमाणीकरण सेटअप करता है:

void ConfigureAuth(IAppBuilder app,  Container container) {
        _log.Debug("Configuring Azure Authentication");

        AzureActiveDirectoryAppSetting setting = container.GetInstance<IAzureActiveDirectoryAppSettingFactory>().Get();
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions() {
                ClientId = setting.ClientID,
                Authority = setting.Authority,
                PostLogoutRedirectUri = setting.PostLogoutRedirectUrl,
                RedirectUri = setting.ReplyUrl,
                Notifications = new OpenIdConnectAuthenticationNotifications() {
                    AuthorizationCodeReceived = new Func<Microsoft.Owin.Security.Notifications.AuthorizationCodeReceivedNotification, System.Threading.Tasks.Task>(args => OnAuthorizationCodeReceived(args, container)),
                    AuthenticationFailed = new Func<Microsoft.Owin.Security.Notifications.AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions>, System.Threading.Tasks.Task>(OnAuthorizationFailed),
                }
            }
        );
    }

    System.Threading.Tasks.Task OnAuthorizationFailed(Microsoft.Owin.Security.Notifications.AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> args) {
        _log.Error("Authorization Failed");
        return System.Threading.Tasks.Task.FromResult<string>(null);
    }
    System.Threading.Tasks.Task OnAuthorizationCodeReceived(Microsoft.Owin.Security.Notifications.AuthorizationCodeReceivedNotification args, Container container) {
        _log.Debug("Authorization Code Received");
        var auth =  container.GetInstance<IClaimsBasedAuthentication>();
        return auth.ReceiveSecurityClaim(args.Code, args.AuthenticationTicket.Identity, HttpContext.Current);
    }

यहाँ Azure से ट्रेस है। जैसा कि आप देख सकते हैं, प्रमाणीकरण सफल है लेकिन "प्राधिकरण विफल" या "प्राधिकरण कोड प्राप्त हुआ" ट्रेस कहीं नहीं पाया जा सकता है। पहली त्रुटि AcquireTokenSilentAsync कॉल से है। यह विफल रहा क्योंकि टोकन को पहले स्थान पर कैश नहीं किया गया था।

किसी भी मदद की सराहना की जाती है। धन्यवाद!

- 2017-06-10T22:18:59  PID[7692] Verbose     Albatross.Security.AzureADOpenIDAuthentication:AzureADOpenIDAuthentication Created
- 2017-06-10T22:18:59  PID[7692] Information Albatross.Web.App_Start.Startup:Web App Configuration
- 2017-06-10T22:18:59  PID[7692] Information Albatross.Web.App_Start.Startup:All areas registered
- 2017-06-10T22:18:59  PID[7692] Information Albatross.Web.App_Start.Startup:Routes registered
- 2017-06-10T22:18:59  PID[7692] Information Albatross.Web.App_Start.Startup:Bundles registered
- 2017-06-10T22:18:59  PID[7692] Verbose     Albatross.Web.App_Start.Startup:Configuring Azure Authentication
- 2017-06-10T22:18:59  PID[7692] Verbose     Albatross.Web.App_Start.Startup:ClientID:xxx
- 2017-06-10T22:18:59  PID[7692] Verbose     Albatross.Web.App_Start.Startup:Authority:https://login.microsoftonline.com/rushuioutlook.onmicrosoft.com
- 2017-06-10T22:18:59  PID[7692] Verbose     Albatross.Web.App_Start.Startup:PostLogoutRedirectUrl:https://albatrossweb.azurewebsites.net/.auth/login/aad/callback/
- 2017-06-10T22:18:59  PID[7692] Verbose     Albatross.Web.App_Start.Startup:ReplyUrl:https://albatrossweb.azurewebsites.net/.auth/login/aad/callback/
- 2017-06-10T22:18:59  PID[7692] Verbose     Albatross.Web.App_Start.Startup:Tenant:rushuioutlook.onmicrosoft.com
- 2017-06-10T22:19:00  PID[7692] Verbose     Received request: GET http://albatrossweb.azurewebsites.net/
- 2017-06-10T22:19:00  PID[7692] Information Redirecting: https://albatrossweb.azurewebsites.net/
- 2017-06-10T22:19:00  PID[7692] Verbose     Received request: GET https://albatrossweb.azurewebsites.net/
- 2017-06-10T22:19:00  PID[7692] Information Redirecting: https://login.windows.net/25dd3578-72e5-4b70-a97b-3cc94f9d69cc/oauth2/authorize?response_type=code+id_token&redirect_uri=https%3A%2F%2Falbatrossweb.azurewebsites.net%2F.auth%2Flogin%2Faad%2Fcallback&client_id=40ca9b08-b857-4307-9ba3-5815031e9ddf&scope=openid+profile+email&response_mode=form_post&nonce=4a0abda18cf6448fb5b8095efb546871_- 20170610222400&state=redir%3D%252F
- 2017-06-10T22:19:29  PID[7692] Verbose     Received request: POST https://albatrossweb.azurewebsites.net/.auth/login/aad/callback
- 2017-06-10T22:19:29  PID[7692] Verbose     JWT validation succeeded. Subject: 'iit96kJ_mJn8Qt0f3kKAZm3qFKMGR2BMjVEnI45JBRc', Issuer: 'https://sts.windows.net/25dd3578-72e5-4b70-a97b-3cc94f9d69cc/'.
- 2017-06-10T22:19:29  PID[7692] Verbose     Calling into external HTTP endpoint POST https://login.windows.net/25dd3578-72e5-4b70-a97b-3cc94f9d69cc/oauth2/token.
- 2017-06-10T22:19:29  PID[7692] Information Login completed for 'ethan@rushuioutlook.onmicrosoft.com'. Provider: 'aad'.
- 2017-06-10T22:19:29  PID[7692] Verbose     Writing 'AppServiceAuthSession' cookie for site 'albatrossweb.azurewebsites.net'. Length: 940.
- 2017-06-10T22:19:29  PID[7692] Information Redirecting: https://albatrossweb.azurewebsites.net/
- 2017-06-10T22:19:31  PID[7692] Verbose     Received request: GET https://albatrossweb.azurewebsites.net/
- 2017-06-10T22:19:31  PID[7692] Verbose     Found 'AppServiceAuthSession' cookie for site 'albatrossweb.azurewebsites.net'. Length: 940.
- 2017-06-10T22:19:31  PID[7692] Verbose     Authenticated ethan@rushuioutlook.onmicrosoft.com successfully using 'Session Cookie' authentication.
- 2017-06-10T22:19:31  PID[7692] Verbose     [Routes(Preview)] No authorization configuration was found.
- 2017-06-10T22:19:33  PID[7692] Error       Albatross.Web.Controllers.ServiceController:Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException: Failed to acquire token silently as no token was found in the cache. Call method AcquireToken

चिह्नित उत्तर पर स्पष्टीकरण के लिए संपादित करें:

जैसा कि नान यू ने कहा, "प्रमाणीकरण / प्राधिकरण" सुविधा सक्षम होने पर इस समस्या को दोहराया जा सकता है। कामकाजी सेटअप नीचे दी गई तस्वीर में है।

  1. सुनिश्चित करें कि "ऐप सेवा प्रमाणीकरण" चालू है
  2. अनुरोध प्रमाणित नहीं होने पर की जाने वाली कार्रवाई: बेनामी अनुरोधों की अनुमति दें (कोई कार्रवाई नहीं) यह वही है जो मुझे एक महीने के लिए अटका हुआ है। मेरे पास "Azure सक्रिय निर्देशिका के साथ लॉग इन करें" पर यह था
  3. Azure सक्रिय निर्देशिका को ठीक से कॉन्फ़िगर करें। आप इस जानकारी को ट्यूटोरियल्स में पा सकते हैं। Azure Active Directory Setup
1
Rushui Guan 13 जून 2017, 01:03
ओपन आईडी कनेक्ट विकल्पों में ResponseType = "code id_token" सेट करने का प्रयास करें। हालांकि यह बहुत अजीब है कि मुझे इसे निर्दिष्ट करने की आवश्यकता नहीं थी और फिर भी एक कोड मिला।
 – 
juunas
13 जून 2017, 08:52

1 उत्तर

सबसे बढ़िया उत्तर

उत्तर url के अनुसार: https://albatrossweb.azurewebsites.net/.auth/login /aad/callback/, ऐसा लगता है कि आपने नीला ऐप सेवा की "प्रमाणीकरण / प्राधिकरण" सुविधा को सक्षम किया है। और मैं पुन: पेश कर सकता हूं कि अगर मैंने "प्रमाणीकरण/प्राधिकरण" सुविधा सक्षम की है, तो उस परिदृश्य में आसान प्रमाणीकरण प्रमाणीकरण प्रक्रिया पर ले जाएगा। यदि आपने ऐप सेवा का "प्रमाणीकरण / प्राधिकरण" सक्षम किया है, तो कृपया उसे अक्षम करने का प्रयास करें और पुनः प्रयास करें।

6
Nan Yu 13 जून 2017, 10:01