基本認証
答えて
ASP.NETセキュリティには、潜在的なセキュリティとパフォーマンスの問題があるため、基本認証ミドルウェアは含まれません。
あなたはテスト目的のために基本認証ミドルウェアが必要な場合は、https://github.com/blowdart/idunno.Authentication
互換性の問題があるため、職場のプロジェクトで[kukkimonsuta](https://github.com/Kukkimonsuta/)の[Odachi](https://github.com/Kukkimonsuta/Odachi)ライブラリを使用しました"私たちが必要としていたことはうまくいった。 –
@blowdart @Matt Ridgway、私は私のウェブサイトで働いている「小町」図書館を手に入れました。ウェブサイトのすべてのURLに対してこの基本認証を実行するように設定するにはどうすればよいですか?私は公衆から私のウェブサイトを保護する必要がありますように。今すぐ 'App.Map("/test "、Run_Simple)'を使って_Startup.cs_で定義する特定のURLに対してのみ動作します。 –
@AliSharabiani - あなたのパイプラインで何か変わったことをしているように聞こえるので、GitHubのレポにリンクすることができますか? –
を見てください私たちは、のActionFilterを使って、内部サービスのためのダイジェストセキュリティを実装:その後、あなたがコントローラに注釈を付けることができます
public class DigestAuthenticationFilterAttribute : ActionFilterAttribute
{
private const string AUTH_HEADER_NAME = "Authorization";
private const string AUTH_METHOD_NAME = "Digest ";
private AuthenticationSettings _settings;
public DigestAuthenticationFilterAttribute(IOptions<AuthenticationSettings> settings)
{
_settings = settings.Value;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
ValidateSecureChannel(context?.HttpContext?.Request);
ValidateAuthenticationHeaders(context?.HttpContext?.Request);
base.OnActionExecuting(context);
}
private void ValidateSecureChannel(HttpRequest request)
{
if (_settings.RequireSSL && !request.IsHttps)
{
throw new AuthenticationException("This service must be called using HTTPS");
}
}
private void ValidateAuthenticationHeaders(HttpRequest request)
{
string authHeader = GetRequestAuthorizationHeaderValue(request);
string digest = (authHeader != null && authHeader.StartsWith(AUTH_METHOD_NAME)) ? authHeader.Substring(AUTH_METHOD_NAME.Length) : null;
if (string.IsNullOrEmpty(digest))
{
throw new AuthenticationException("You must send your credentials using Authorization header");
}
if (digest != CalculateSHA1($"{_settings.UserName}:{_settings.Password}"))
{
throw new AuthenticationException("Invalid credentials");
}
}
private string GetRequestAuthorizationHeaderValue(HttpRequest request)
{
return request.Headers.Keys.Contains(AUTH_HEADER_NAME) ? request.Headers[AUTH_HEADER_NAME].First() : null;
}
public static string CalculateSHA1(string text)
{
var sha1 = System.Security.Cryptography.SHA1.Create();
var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(text));
return Convert.ToBase64String(hash);
}
}
かあなたがダイジェストセキュリティとアクセスできるようにしたい方法:
[Route("api/xxxx")]
[ServiceFilter(typeof(DigestAuthenticationFilterAttribute))]
public class MyController : Controller
{
[HttpGet]
public string Get()
{
return "HELLO";
}
}
基本的なセキュリティを実装するには、SiはDigestAuthenticationFilterAttributeを変更してSHA1を使用せず、AuthorizationヘッダーのBase64デコードを直接行います。
参考にしてください。このアプローチの欠点は、このフィルタ(認証)が非常に遅く起こることです。認証フィルタが実行された後に実行され、認証フィルタが役に立たないことが表示されます。 –
ASP.NET Core 2.0では、認証と識別情報に大きな変更が加えられました。
On 1.xの認証プロバイダは、ミドルウェア(受諾された回答の実装)によって設定されました。 2.0ではサービスに基づいています。 MSドキュメント上
詳細: https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x
私はASP.NETコア2.0のための基本認証の実装を書かれ、NuGetに公開しました: https://github.com/bruno-garcia/Bazinga.AspNetCore.Authentication.Basic
- 1. 基本認証
- 2. 基本アクセス認証
- 3. チャレンジログイン、基本認証
- 4. 基本認証エラー
- 5. Webサービスの基本認証
- 6. 基本認証とJWT
- 7. ルーメンHTTP基本認証
- 8. HTTP基本認証メカニズム
- 9. Nginxリバースプロキシ - パススルー基本認証
- 10. angularjs基本認証ヘッダー
- 11. 基本認証は、プログラム
- 12. Rest API基本認証
- 13. OpenLayersの基本認証3
- 14. WCFの基本認証
- 15. C#SSL基本アクセス認証
- 16. ログオフボタンIIS6 ASP.NET基本認証
- 17. Cakephp 2.0と基本認証
- 18. クロスドメインajaxリクエスト基本認証
- 19. GowallaのHTTP基本認証?
- 20. 基本HTTP認証ゴー
- 21. JQueryクロスドメイン基本認証コール
- 22. Jquery基本認証エラー
- 23. アンドロイド基本認証okhttpclient
- 24. Padrinoの基本ユーザ認証
- 25. CORSとHTTP基本認証
- 26. Java Rest基本認証
- 27. WCFとAD LDSと基本認証
- 28. Regex for HTTP URLの基本認証
- 29. Camel Jettyとの基本認証
- 30. Web API認証基本とベアラー
なぜdownvote。良い質問!私は0にあなたをアップフォートした。私ができることすべて。 – Coaden