13

में व्यक्तिगत उपयोगकर्ता खाते और संगठनात्मक खातों का समर्थन करना मैंने एक एएसपी.NET एमवीसी 5 एप्लीकेशन बनाया है, जिसमें मैंने Google, Facebook, आदि के माध्यम से व्यक्तिगत उपयोगकर्ता खाते कॉन्फ़िगर किए हैं (और ठीक काम कर रहे हैं)।एमवीसी 5/एएसपी.Net पहचान 2

मैं जो करना चाहता हूं वह Azure सक्रिय निर्देशिका (संगठनात्मक लेखा) के खिलाफ प्रमाणीकरण का भी समर्थन करता है। यह आंतरिक कर्मचारियों के लिए व्यवस्थापक के रूप में ऐप पर लॉगऑन करने में सक्षम होगा।

मुझे मिली सभी मौजूदा जानकारी/गाइड/दस्तावेज आमतौर पर एक या दूसरे का उपयोग करने से संबंधित हैं। मैं उन्हें दोनों को एक साथ कैसे सक्षम करूं?

यदि प्रत्येक प्रकार के उपयोगकर्ता के लिए अलग लॉगऑन फॉर्म होना आवश्यक है, तो यह कोई मुद्दा नहीं होगा।

संपादित करें:

मैं Azure सक्रिय निर्देशिका पोर्टल के भीतर आवेदन विन्यास देख रहा था, और ध्यान दें कि वे एक "OAuth 2.0 प्राधिकरण ENDPOINT" परिभाषित करते हैं। क्या इसका उपयोग करने के लिए Startup.Auth.cs के भीतर एमवीसी 5 कॉन्फ़िगर किया जा सकता है?

उत्तर

4

मैं निम्न तरीके से लागू करने में कामयाब रहे।

दूसरा, मेरे Startup.Auth.cs में यह विन्यस्त करने:

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions 
{ 
    ClientId = "From the Azure Portal (see below)", 
    Authority = "https://login.windows.net/<domain>.onmicrosoft.com", 
    Notifications = new OpenIdConnectAuthenticationNotifications 
    { 
     RedirectToIdentityProvider = (ctx) => 
     { 
      if (ctx.Request.Path.Value.EndsWith("ExternalLogin")) 
      { 
       string appBasePathUrl = ctx.Request.Scheme + "://" + ctx.Request.Host + ctx.Request.PathBase; 
       ctx.ProtocolMessage.RedirectUri = appBasePathUrl + "/"; 
       ctx.ProtocolMessage.PostLogoutRedirectUri = appBasePathUrl; 
      } 
      else 
      { 
       ctx.State = NotificationResultState.Skipped; 
       ctx.HandleResponse(); 
      } 

      return Task.FromResult(0); 
     } 
    }, 
    Description = new AuthenticationDescription 
    { 
     AuthenticationType = "OpenIdConnect", 
     Caption = "SomeNameHere" 
    } 
}); 

तीसरा, मैं सेटअप Azure पोर्टल में आवेदन (क्लासिक):

Azure Active Directory Application Configuration

चौथा, मैंने व्यवस्थापक उपयोगकर्ताओं के लिए एक अलग लॉगऑन पेज जोड़ा:

@using (Html.BeginForm("ExternalLogin", "Home")) 
{ 
    @Html.AntiForgeryToken() 
    <div class="ui basic segment"> 
     <div class="ui list"> 
      <div class="item"> 
       <button type="submit" name="provider" value="OpenIdConnect" class="left floated huge ui button social"> 
        <i class="windows icon"></i> 
        <span>My Org Name</span> 
       </button> 
      </div> 
     </div> 
    </div> 
} 

पांचवें, ExternalLogin कार्रवाई को बदलने की जरूरत नहीं है - हम सिर्फ Owin मिडलवेयर बाहरी प्रवेश पृष्ठ पर हमें पुन: निर्देशित करते हैं। प्रवाह तब उपयोगकर्ता को ExternalLoginCallback कार्रवाई पर वापस निर्देशित करेगा।

अंत में, ExternalLoginCallback कार्रवाई में, मैं भेजे दावों की जांच निर्धारित करने के लिए कि लॉगिन Azure AD के माध्यम से किया गया था, और इसके बजाय ASP.NET पहचान में बुलाने की, मैं अपने ही ClaimsIdentity, जो मेरे सारे (आवेदन है निर्माण विशिष्ट) दावा जानकारी जो मेरा एप्लिकेशन व्यवस्थापक उपयोगकर्ता के रूप में पहचानता है।

अब, व्यवस्थापक उपयोगकर्ता https://example.com/admin पर नेविगेट करते हैं, लॉगिन बटन पर क्लिक करें, Azure AD लॉगिन पर रीडायरेक्ट किए जाते हैं, और एप्लिकेशन को व्यवस्थापक उपयोगकर्ता के रूप में वापस ले जाते हैं।

0

आपकी सर्वश्रेष्ठ शर्त एज़्यू एडी एक्सेस कंट्रोल सर्विसेज (एसीएस) का लाभ उठाने और एज़ूर एडी, फेसबुक, एट अल शामिल करने के लिए पहचान प्रदाता स्थापित करने के लिए होगी। यहां प्रलेखन देखें: http://azure.microsoft.com/en-us/documentation/articles/active-directory-dotnet-how-to-use-access-control/

+0

हां, मैंने इसमें तुरंत देखा है। मैं वास्तव में इस से बचने की कोशिश कर रहा था - उपयोगकर्ता अनुभव वास्तव में मेल नहीं खाता जो मैं प्राप्त करना चाहता हूं। –

+0

हो सकता है कि आप थिंकटेक्चर की पहचान सर्वर (http://thinktecture.github.io/Thinktecture.IdentityServer.v2/) जैसी कुछ लीवरेजिंग रोल कर सकें। डाउनसाइड यह है कि अब एक होस्टेड सेवा नहीं है और आपको अपने प्रमाणीकरण हैंडलर के रूप में कार्यरत सर्वर को खिलाने और बनाए रखने की आवश्यकता है। –

0

एसीएस का उपयोग वास्तव में किया जा सकता है, हालांकि आपने पहले से ही Google/Facebook साइनइन लागू कर लिया है, मैं अनुशंसा करता हूं कि आप एसीएस/थिंकटेक्चर जैसे इंटरमीडिएट एसटीएस के माध्यम से सीधे एज़ूर एडी के साथ एकीकृत हों।

यदि आपके ऐप के साइनइन अनुभव में उपयोगकर्ता "फेसबुक के साथ साइनइन"/फेसबुक के साथ साइनइन "स्टिकर पर क्लिक करना शामिल है - तो आप" अपनी कंपनी के साथ साइनइन "जोड़ सकते हैं।" (यहां तक ​​कि एक अनुशंसित ब्रांडिंग शैली भी है: http://msdn.microsoft.com/en-us/library/azure/dn132598.aspx यदि आप ऐप वास्तविक खोज निष्पादित करते हैं और उपयोगकर्ता को उपयुक्त आईडीपी (आगे बढ़ने के लिए अपना ईमेल पता दर्ज करें "जैसे कुछ टेक्स्ट बॉक्स को नियोजित करते हैं) - तो आप अपने लिए मिलान जोड़ सकते हैं कंपनी का नाम ईमेल पते और उन उपयोगकर्ताओं को एएडी को अग्रेषित करें।

दोनों मामलों में, आपका आवेदन एएडी के एसएसओ एंडपॉइंट को एसएसओ अनुरोध जारी करेगा: https://login.windows.net/ {कंपनी डोमेन नाम/आईडी}/{wsfed/saml/oauth2}। अगर आप नेट, WSFed उपयोग कर रहे हैं, यह आप के माध्यम से देखना चाहिए: http://msdn.microsoft.com/en-us/library/azure/dn151789.aspx कोड के लिए देखें:।

SignInRequestMessage sirm = FederatedAuthentication.WSFederationAuthenticationModule.CreateSignInRequest("", HttpContext.Request.RawUrl, false); 
result = Redirect(sirm.RequestUrl.ToString()); 

वहाँ भी एक OpenIdConnect है यहाँ नमूना:

पहले, Microsoft.Owin.Security.OpenIdConnect Nuget पैकेज के लिए एक संदर्भ जोड़ने: http://msdn.microsoft.com/en-us/library/azure/dn151789.aspx

संबंधित मुद्दे