5

में मैंने दो अनुप्रयोगों को सामने वाले अंत के लिए बनाया है (AngularJs और Asp.Net MVC का उपयोग करके बनाया गया है) और बैकएंड के लिए मैंने वेब एपी एप्लिकेशन का उपयोग किया था।ओविन: वेबपी कॉल 401 अनधिकृत त्रुटि Azure

मैं अपने आवेदन को फ्रंट एंड में फॉर्म प्रमाणीकरण के साथ सुरक्षित करने की कोशिश कर रहा हूं और बैक एंड में मूल रूप प्रमाणीकरण लागू कर रहा हूं।

जब मैंने आईआईएस में स्थानीय रूप से परीक्षण किया तो यह ठीक काम करता है। लेकिन जब मैंने Azure में अपना एप्लिकेशन होस्ट किया, तो प्रमाणीकरण विशेषता वाले एपीआई कॉल 401 अनधिकृत त्रुटि के साथ रिटर्न देता है।

प्रतिक्रिया हेडर:

Access-Control-Allow-Origin:* 
    Cache-Control:no-cache 
    Content-Length:0 
    Date:Wed, 05 Oct 2016 11:08:30 GMT 
    Expires:-1 
    Pragma:no-cache 
    Server:Microsoft-IIS/8.0 
    Set-Cookie:ARRAffinity=925cd503f9e5771e9ad651c59baa4a1f678d93cac8b9da4dc9bcb64892ac8710;Path=/;Domain=FrontEnd.azurewebsites.net 
    WWW-Authenticate:Basic realm="Backend.azurewebsites.net" 
    X-AspNet-Version:4.0.30319 
    X-Powered-By:ASP.NET 

अनुरोध हेडर;

Accept:application/json, text/plain, */* 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:en-US,en;q=0.8 
Cache-Control:no-cache 
Connection:keep-alive 
Host:backend.azurewebsites.net 
Origin:http://FrontEnd.azurewebsites.net 
Pragma:no-cache 
Referer:http://FrontEnd.azurewebsites.net/ 
Token:null 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 

लेकिन अनुरोध हेडर

Authorization: Basic dmlzaG53guFua2FyLnNha3Roadh4bEBnbWFpbC5jb206MTIzMTIz 
    Cookie: __RequestVerificationToken_L3Nfg4dwc3Bh0=YGwlXkckjhg6xTESkI-lN9sNtDVsfefshsrvGWPKekmv_GLZ0Rq8eA5P8Z7sdf4trwbPX4WymcGJJrLamQLMe2Vf2D2fVUg4qJptOvcsCWg1; ASP.NET_SessionId=gk4s1rlsfg5gfeafo3455dkr; .ASPXAUTH=C8113FD23FC4902dsfrsdf5FB3399BA121703F41F9A57AEA50667F2AD4FC02F3D3955215A91F6A3A2EA4287202522380435A93D8BE78D45E6D24FB7E05F64653AE06E0026DEB2911343591563F70EE8EE76338F07CBABE6EA4B95359F3C31sdf9C999sdf2864849gfdB916A06gfds29E3C8D01D2371807E98335000D4D14B391CCE3zxcd49DB77696F4BB77E4434 

के साथ स्थानीय में

प्राधिकरण पारित हो जाता है और कुकी पैरामीटर रूपों प्रमाणीकरण के साथ नीला दृश्यपटल app से अनुरोध में से नहीं जोड़ा गया है।

मैंने अपने बैकएंड ऐप की प्रमाणीकरण/प्रमाणीकरण कॉन्फ़िगरेशन को अजीब में बंद कर दिया है, यह बंद हो जाता है। किसी भी शरीर को पता है कि समस्या क्या है या मुझे एज़ूर पोर्टल में कॉन्फ़िगर करने की आवश्यकता है। धन्यवाद।

+0

स्थानीय रूप से दोनों ऐप्स शायद स्थानीयहोस्ट का उपयोग करते हैं, इसलिए कुकी साझा करें - लेकिन एक बार तैनात किए जाने पर वे अलग-अलग ऐप्स हैं इसलिए प्रमाणीकरण कुकी –

+0

@NeilThompson साझा न करें अनुरोध में कुकीज जोड़ने का कोई तरीका है ?? – Skull

+0

क्या यह हल हो गया है? –

उत्तर

2

यह समस्या CORS के कारण आप अपने अनुरोध में जोड़कर इस का समाधान कर सकते है,

$http({ 
    .... 
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 
    withCredentials: true, 
    }) 

वेब एपीआई के web.config

<system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
      <handlers> 
       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
       <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
       <remove name="OPTIONSVerbHandler" /> 
       <remove name="TRACEVerbHandler" /> 

       <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
       <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
       <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
      </handlers> 


      <httpProtocol> 
       <customHeaders> 
        <add name="Access-Control-Allow-Origin" value="**FrontEnd URL**" /> 
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, Cache-Control" /> 
        <add name="Access-Control-Allow-Credentials" value="true" /> 
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
       </customHeaders> 
      </httpProtocol> 
     </system.webServer> 

तुम भी रूप में अच्छी तरह इस URL का उल्लेख : https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

2

ऐसा शायद इसलिए है क्योंकि वे अब नहीं हैं एक ही मशीन पर लगाया गया है (आपके एज़ूर सेटअप के आधार पर)। मुझे machineKey के साथ एक ही समस्या है।

निम्न URL में निर्देशों का पालन अनुप्रयोगों के बीच सेटिंग्स मैच के लिए और आप ठीक होना चाहिए:

https://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx

संपादित करें: प्रतिक्रिया हेडर में Access-Control-Allow-Origin:* के साथ यह शायद एक सामान्य CORS समस्या नहीं है , हालांकि machineKey और सीओआरएस समस्याएं अक्सर एक साथ आती हैं। यदि machineKey फ़िक्स काम नहीं करता है, तो जांचें कि आप सीओआरएस प्री-फ्लाइट चेक कैसे प्रबंधित कर रहे हैं। my answer here देखें।

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