{"id":225,"date":"2024-02-07T21:04:44","date_gmt":"2024-02-07T20:04:44","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=225"},"modified":"2024-02-21T21:08:22","modified_gmt":"2024-02-21T20:08:22","slug":"basic-authentication-in-spring-mit-spring-security","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=225","title":{"rendered":"Basic Authentication in Spring mit Spring Security"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Einf\u00fchrung<\/h3>\n\n\n\n<p>Spring Security ist ein leistungsstarkes und anpassbares Authentifizierungs- und Zugriffskontrollframework f\u00fcr Java-Anwendungen. Einer der weit verbreiteten Authentifizierungsmechanismen, die von Spring Security unterst\u00fctzt werden, ist die Basic Authentication. Basic Authentication ist eine einfache und weit verbreitete Methode zur Sicherung von Webanwendungen, insbesondere im Kontext von RESTful APIs.<\/p>\n\n\n\n<p>In diesem Artikel werden wir uns mit der Implementierung von Basic Authentication in einer Spring-Anwendung mit Spring Security befassen. Wir werden die Grundlagen der Basic Authentication, ihre Vorteile und die Schritte zur Integration in ein Spring-Projekt behandeln.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verst\u00e4ndnis von Basic Authentication<\/h3>\n\n\n\n<p>Basic Authentication ist ein einfaches Authentifizierungsschema, das in das HTTP-Protokoll integriert ist. Es beinhaltet das Senden eines Benutzernamens und eines Passworts als Teil der Anfrageheader. Die Anmeldeinformationen werden in der Regel unter Verwendung der Base64-Codierung verschl\u00fcsselt, was ein grundlegendes Sicherheitsniveau bietet. Es ist jedoch wichtig zu beachten, dass Basic Authentication allein nicht f\u00fcr alle Anwendungsf\u00e4lle sicher genug ist, und es wird oft empfohlen, es in Verbindung mit sicheren Transportprotokollen wie HTTPS zu verwenden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einrichten eines Spring-Projekts<\/h3>\n\n\n\n<p>Um zu beginnen, richten wir ein einfaches Spring-Projekt ein. Sie k\u00f6nnen Spring Initializr (https:\/\/start.spring.io\/) oder Ihre bevorzugte IDE verwenden, um ein neues Projekt mit den erforderlichen Abh\u00e4ngigkeiten zu erstellen. Stellen Sie sicher, dass die Abh\u00e4ngigkeiten &#8222;Spring Web&#8220; und &#8222;Spring Security&#8220; enthalten sind.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Konfiguration von Spring Security<\/h3>\n\n\n\n<p>Sobald das Projekt eingerichtet ist, ist der n\u00e4chste Schritt die Konfiguration von Spring Security f\u00fcr Basic Authentication. Dies kann durch das Erstellen einer Konfigurationsklasse erfolgen, die von <code>WebSecurityConfigurerAdapter<\/code> erbt. \u00dcberschreiben Sie die Methode <code>configure(HttpSecurity http)<\/code>, um die Sicherheitseinstellungen anzupassen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-keyword\">@Configuration<\/span>\n@EnableWebSecurity\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\n\n    <span class=\"hljs-keyword\">@Override<\/span>\n    protected void configure(HttpSecurity http) throws Exception {\n        <span class=\"hljs-selector-tag\">http<\/span>\n            <span class=\"hljs-selector-class\">.authorizeRequests<\/span>()\n                <span class=\"hljs-selector-class\">.anyRequest<\/span>()<span class=\"hljs-selector-class\">.authenticated<\/span>()\n            <span class=\"hljs-selector-class\">.and<\/span>()\n            <span class=\"hljs-selector-class\">.httpBasic<\/span>();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In dieser Konfiguration haben wir angegeben, dass jede Anfrage authentifiziert sein muss, und wir haben die Basic Authentication mit <code>httpBasic()<\/code> aktiviert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Benutzerauthentifizierung<\/h3>\n\n\n\n<p>Der n\u00e4chste Schritt besteht darin, die Benutzerauthentifizierung zu konfigurieren. Spring Security bietet einen <code>InMemoryUserDetailsManager<\/code> f\u00fcr die Einfachheit in diesem Beispiel. In einem realen Szenario w\u00fcrden Sie wahrscheinlich eine Integration mit einer Benutzerdatenbank durchf\u00fchren.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Configuration\n@EnableWebSecurity\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SecurityConfig<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">WebSecurityConfigurerAdapter<\/span> <\/span>{\n\n    @Override\n    <span class=\"hljs-keyword\">protected<\/span> void configure(HttpSecurity http) throws <span class=\"hljs-keyword\">Exception<\/span> {\n        http\n            .authorizeRequests()\n                .anyRequest().authenticated()\n            .<span class=\"hljs-keyword\">and<\/span>()\n            .httpBasic();\n    }\n\n    @Override\n    @Bean\n    <span class=\"hljs-keyword\">public<\/span> UserDetailsService userDetailsService() {\n        UserDetails user = User.withDefaultPasswordEncoder()\n            .username(<span class=\"hljs-string\">\"user\"<\/span>)\n            .password(<span class=\"hljs-string\">\"password\"<\/span>)\n            .roles(<span class=\"hljs-string\">\"USER\"<\/span>)\n            .build();\n\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> InMemoryUserDetailsManager(user);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel haben wir einen Benutzer mit dem Benutzernamen &#8222;user&#8220;, dem Passwort &#8222;password&#8220; und der Rolle &#8222;USER&#8220; erstellt. Passen Sie diese Konfiguration entsprechend den Anforderungen Ihrer Anwendung an.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testen von Basic Authentication<\/h3>\n\n\n\n<p>Nun, da die Basic Authentication eingerichtet ist, k\u00f6nnen Sie sie testen, indem Sie Anfragen an Ihre gesicherten Endpunkte senden. Beim Zugriff auf eine gesch\u00fctzte Ressource muss der Client den <code>Authorization<\/code>-Header mit den Base64-kodierten Anmeldeinformationen einschlie\u00dfen.<\/p>\n\n\n\n<p>Zum Beispiel mit cURL:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl -u user:password http:<span class=\"hljs-comment\">\/\/localhost:8080\/api\/resource<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Ersetzen Sie &#8222;user&#8220; und &#8222;password&#8220; durch die von Ihnen konfigurierten Anmeldeinformationen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p>In diesem Artikel haben wir die Implementierung der Basic Authentication in einer Spring-Anwendung mit Spring Security erkundet. Basic Authentication ist eine einfache, aber effektive Methode zur Sicherung von Webanwendungen, insbesondere im Kontext von RESTful APIs. Wenn Ihre Anwendung w\u00e4chst, sollten Sie in Erw\u00e4gung ziehen, fortgeschrittenere Authentifizierungsmechanismen zu erkunden und sich mit externen Identit\u00e4tsanbietern f\u00fcr eine verbesserte Sicherheit zu integrieren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einf\u00fchrung Spring Security ist ein leistungsstarkes und anpassbares Authentifizierungs- und Zugriffskontrollframework f\u00fcr Java-Anwendungen. Einer der weit verbreiteten Authentifizierungsmechanismen, die von Spring Security unterst\u00fctzt werden, ist die Basic Authentication. Basic Authentication ist eine einfache und weit verbreitete Methode zur Sicherung von Webanwendungen, insbesondere im Kontext von RESTful APIs. In diesem Artikel werden wir uns mit der [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-225","post","type-post","status-publish","format-standard","hentry","category-spring"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=225"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":226,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions\/226"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}