2015-09-09 10 views
7

प्रकाशित होने पर मैं Azure सक्रिय निर्देशिका प्रमाणीकरण के साथ एक एमवीसी अनुप्रयोग बना रहा हूं। जब मैं स्थानीय रूप से विकसित होता हूं तो मैं परीक्षण/विकास उद्देश्यों के लिए साइन-इन करने में सक्षम होना चाहता हूं। और ऐप यूआरएल http://localhost:43400 जैसा है। यह एडी अनुप्रयोग में Sign-On Url और Reply Url में एन्कोड किया गया है।Azure सक्रिय निर्देशिका का उपयोग - स्थानीय रूप से लॉगिन करने के लिए एक एप्लिकेशन और

जब मैं सर्वर पर एक ही ऐप को तैनात करता हूं, तो ऐप यूआरएल बदल जाता है - myappname.azurewebsites.net जैसा कुछ बन जाता है और मैं उसी विज्ञापन एप्लिकेशन का उपयोग करके लॉगिन नहीं कर सकता। सबसे अच्छा मैं प्रबंधित कर सकता हूं लॉगिन प्रक्रिया के माध्यम से प्राप्त करना है, लेकिन फिर एडी मुझे वापस localhost:43400 पर रीडायरेक्ट करता है जो गलत है।

Startup.Auth.cs में संपत्ति है जो मैं ऐप को देता हूं, लेकिन इससे कोई फर्क नहीं पड़ता।

उसी एप्लिकेशन के उपयोग से स्थानीय एप्लिकेशन और तैनात आवेदन करने का कोई तरीका?

मैं अलग-अलग यूआरएल और चाबियों के साथ 2 एडी आवेदनकर्ता कर सकता हूं और web.config पर मूल्यों को फिर से लिख सकता हूं। लेकिन यह सबसे अच्छा समाधान की तरह नहीं लगता है। क्या मैं कुछ और कर सकता हूँ?

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions 
    { 
     ClientId = clientId, 
     Authority = Authority, 
     PostLogoutRedirectUri = postLogoutRedirectUri, // <-- this is coming from web.config, different in dev and prod 

     Notifications = new OpenIdConnectAuthenticationNotifications() 
     { 
      ..... 

     } 
    }); 

पूर्ण कोड लिस्टिंग here देखें:

युपीडी

यहाँ बिट मैं Startup.Auth.cs में की चर्चा करते हुए कर रहा हूँ है।

और Azure AD आवेदन में मैं एक ही समय में एक उत्तर दें URL के रूप में दोनों पतों की कोशिश की: Azure AD Application Reply URL

लेकिन ई केवल पतों में से एक का इस्तेमाल किया रीडायरेक्ट करने के लिए, भले ही ग्राहक पुनर्निर्देशन कि से मेल खाता निर्दिष्ट रिकॉर्ड के।

+0

में RedirectToIdentityProvider देखें, क्या आप उस Azure AD में 2 अलग-अलग एप्लिकेशन नहीं बना सकते? –

+0

मैं कर सकता हूं - यही सवाल है कि मेरा अंतिम भाग क्या कहता है। क्या कोई बेहतर तरीका है? – trailmax

+0

क्षमा करें ... उस भाग को नहीं पढ़ा! एक और चीज जो आप कर सकते हैं, उसी एप्लिकेशन में दोनों पर्यावरण के लिए यूआरआई को रीडायरेक्ट कर दिया है। मैंने जो प्रयास किया है वह मेरे एप्लिकेशन में एक ही वातावरण के लिए एकाधिक रीडायरेक्ट यूआरआई (साइन अप के लिए और दूसरा साइन इन करने के लिए) है लेकिन आप इसे आज़मा सकते हैं। –

उत्तर

9

आप अपने ऐप में एकाधिक रीडायरेक्ट यूरी जोड़ सकते हैं, यही कारण है कि संपत्ति को सूची के रूप में लागू किया गया है! आपको बस यह सुनिश्चित करने की ज़रूरत है कि आप निर्दिष्ट यूआरआई को रनटाइम पर उपयोग करें। आप इसे कई तरीकों से कर सकते हैं - आप मिडलवेयर इनिट टाइम पर रिटर्न यूआरआई निर्दिष्ट कर सकते हैं, या आप डायनामिक कोड जोड़ सकते हैं जो साइन इन संदेश में रीडायरेक्ट यूआरआई इंजेक्ट करेगा। बाद के दृष्टिकोण के उदाहरण के लिए, कृपया https://github.com/AzureADSamples/WebApp-MultiTenant-OpenIdConnect-DotNet/blob/master/TodoListWebApp/App_Start/Startup.Auth.cs

+0

मैंने उस सूची में दोनों पते सूचीबद्ध करने का प्रयास किया है, लेकिन शायद मुझे यह निर्दिष्ट करने का एक तरीका मिल गया है कि मुझे किसकी आवश्यकता है। उस कोड नमूने में, क्या आप 'RedirectToIdentityProvider' भाग के बारे में बात कर रहे हैं? बीटीडब्ल्यू, मैंने प्रश्न में थोड़ा और कोड जोड़ा है। – trailmax

+1

हां, मैं RedirectToIdentityProvider का जिक्र कर रहा हूं। इससे आपको एक अनुकूली कोडबेस होना होगा जो रन टाइम पर यूआरआई को सही रीडायरेक्ट करता है। जैसा कि मैंने संकेत दिया है: यदि आप तैनाती से पहले एक स्थिर स्ट्रिंग को बदलना पसंद करते हैं, तो आप हमेशा निर्दिष्ट कर सकते हैं कि आप दो यूआरआई में से कौन सा मिडलवेयर प्रारंभ में सीधे उपयोग करना चाहते हैं, आप केवल उसी तरह से RedirectUri को पास करते हैं जिसमें आप PostLogoutRedirectUri पास करते हैं आज। – vibronet

+0

आपको मिल गया! जब मैं कार्यालय में वापस आऊंगा तो मैं इसे कल जाने दूंगा। – trailmax

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