2016-05-19 15 views
0

AzureでホストされているASP.NET Webサイトでは、特定のユーザーだけがアクセスできるようにページを保護する必要があります。ページで使用されるjavascriptライブラリのために、HTTP経由で提供された場合にのみ正しく動作しますが、HTTPS経由でページが提供されない限り、ASP.NET認証はアクセスを許可しません。セキュアなページへのアクセスを制限するページにHTTPが必要です。 ASP.NET認可にはHTTPSが必要です

、私はページを含むフォルダにWeb.configファイルを追加しました:

<configuration> 
    <system.web> 
    <authorization> 
     <allow roles="Admin" /> 
     <allow roles="Map Viewer" /> 
     <deny users="*" /> 
    </authorization> 
    </system.web> 
</configuration> 

メインweb.configファイルは、フォーム認証を設定します。

<authentication mode="Forms"> 
    <forms loginUrl="~/account/login/" 
     requireSSL="true" 
     timeout="2880" /> 
</authentication> 

は、https(例えばhttps://example.com/Map)を介して保護されたページにアクセスする場合、これは魔法のように動作します。ログインするように求められ、資格情報を入力すると、そのページに移動します。上記のように、httpで配信される場合、ページは正しく動作しません。ただし、ASP.NET認証/承認ではアクセスできません。 1.ログインしていない場合は、httpでページにアクセスしようとすると、ログインするとサイトホームページにリダイレクトされます。 2既にログインしていてもログイン画面にログインした場合、ログイン画面に表示されます。

HTTPが正しく動作するためにはHTTPが必要ですベースの認証プロセスは、長年にわたりそれらのページのために正常に動作しています。

+0

なぜJavaScriptライブラリにHTTPが必要ですか?私はそれに疑念を抱いていますが、本当に真実ならば、その図書館を発砲して交換を見つけるべきです。 –

+0

[link](https://cartodb.com/)はHTTPS経由でライブラリを提供していません - HTTPに戻ってしまいます。 JSライブラリーをサーバーにコピーしようとしましたが、ライブラリーによってロードされたマップ・タイルはHTTPSを経由しません。 –

+1

セキュリティに関して深刻でないように見えるので、CartoDBをドロップするだけで十分でしょう。 –

答えて

0

requireSSL属性をfalseに設定するか、削除します(値が指定されていない場合は、requireSSLはfalseです)。 requireSSLがtrueに設定されている場合、サーバーはHTTPS接続を介してサーバーに送信されない限り、認証Cookieを受け入れません。この属性が削除されると、サーバーはHTTPとHTTPSの両方からの認証Cookieを受け入れます。

+0

'requireSSL'をfalseに設定すると、認証クッキーがHTTP接続経由で送信された場合に盗まれる可能性があるため、セキュリティ上の意味があります。 –

関連する問題