5

İki uygulama oluşturdum, biri ön uç için (AngularJs ve Asp.Net MVC kullanılarak oluşturuldu) ve arka uç için Web API uygulamasını kullandım.OWIN: webapi çağrısı 401'de Azure'da yanlışlık hatası döndürülüyor Hata

Uygulamamı ön uçta form kimlik doğrulamasıyla güvenceye almaya çalışıyorum ve arka uçtaki temel form kimlik doğrulamasını gerçekleştirdim.

Yerel olarak IIS'de sınandığımda iyi çalışıyor. Ancak, uygulamanızı Azure'da barındırdığımda kimlik doğrulama özniteliğiyle API çağrısı 401 yetkisiz bir hatayla sonuçlanıyor.

yanıt Üstbilgi:

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 

ayrıntılı Üstbilgi;

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 

Ama istek başlığında

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

ile birlikte yerel

Yetkilendirme geçirilir ve Çerez parametre form kimlik doğrulaması ile masmavi FRONTEND uygulamasından istekte eklenmedi değildir.

Arka uç uygulamamın kimlik doğrulaması/yetkilendirme yapılandırmasını azure olarak görüntüledim, kapatır. Herhangi bir kuruluş, sorunun ne olduğunu ya da masmavi portalda yapılandırmam gerekeni bilir. Önceden teşekkürler.

+0

yerel olarak her iki uygulama da muhtemelen localhost kullanıyor, bu nedenle çerezleri paylaşın - ancak bir kez dağıtıldıkları için ayrı uygulamalar olduklarından kimlik doğrulama çerezini paylaşmayın –

+0

@NeilThompson Çerezleri isteğine eklemek için bir yol var mı? – Skull

+0

Bu çözüldü mü? –

cevap

2

Bu sorun isteğinizde ekleyerek bu çözebilir cors nedeniyle, web API

$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> 

ayrıca da bu URL'yi bakın : https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

2

Bu büyük olasılıkla artık ho değil çünkü Aynı makineye takıldı (Azure kurulumunuza bağlı olarak). Ben de machineKey ile benzer bir sorun yaşadım.

uygulamalar arasında ayarlarını eşleştirmek için aşağıdaki URL'ye talimatları uygulayın ve ince olmalıdır:

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

EDIT: cevap başlığında Access-Control-Allow-Origin:* ile muhtemelen normal bir CORS sorun değildir Her ne kadar machineKey ve CORS sorunları sık sık bir araya geliyor. machineKey düzeltmesi çalışmazsa, CORS uçuş öncesi denetimlerini nasıl ele aldığınızı kontrol edin. Bakınız my answer here.