{"id":1935,"date":"2019-07-13T12:00:00","date_gmt":"2019-07-13T10:00:00","guid":{"rendered":"https:\/\/kindsonthegenius.com\/blog\/introduction-to-spring-security-a-practical-tutorial\/"},"modified":"2026-07-05T03:24:00","modified_gmt":"2026-07-05T01:24:00","slug":"introduction-to-spring-security-a-practical-tutorial","status":"publish","type":"post","link":"https:\/\/kindsonthegenius.com\/blog\/introduction-to-spring-security-a-practical-tutorial\/","title":{"rendered":"Spring Security Tutorial 1 \u2013 An Introduction (Step by Step)"},"content":{"rendered":"<p>I would teach you how to work with Spring Security.<\/p>\n<ul>\n<li><a href=\"https:\/\/kindsonthegenius.com\/tempsite\/introduction-to-spring-security-a-practical-tutorial\/\">Tutorial 1 &#8211; Introduction to Spring Security\u00a0<\/a><\/li>\n<li><a href=\"https:\/\/kindsonthegenius.com\/tempsite\/spring-security-tutorial-storing-user-credential-in-mysql-database\/\">Tutorial 2 &#8211; Storing Login Details in MySQL<\/a><\/li>\n<li><a href=\"https:\/\/kindsonthegenius.com\/tempsite\/spring-security-tutorial-3-encoding-your-password\/\">Tutorial 3 &#8211; Using BCrypt Password Encoder<\/a><\/li>\n<li><a href=\"https:\/\/kindsonthegenius.com\/tempsite\/spring-security-tutorial-4-create-your-own-login-form\/\">Tutorial 4 &#8211; Custom Login Form<\/a><\/li>\n<\/ul>\n<p>We would follow a step by step pattern. The steps are as follows:<\/p>\n<ol>\n<li><a href=\"#t1\">Create an unsecured web application<\/a><\/li>\n<li><a href=\"#t2\">Add default Spring Authentication<\/a><\/li>\n<li><a href=\"#t2\">Test the application<\/a><\/li>\n<li><a href=\"#t4\">Add login details in the application.propeties file and test the application<\/a><\/li>\n<li><a href=\"#t5\">Extend the WebsecurityConfigurer<\/a><\/li>\n<li><a href=\"#t5\">Create a UserDetails object<\/a><\/li>\n<li><a href=\"#t5\">Test the application<\/a><\/li>\n<li><a href=\"#t8\">Next Steps (Storing user details in a database)<\/a><\/li>\n<\/ol>\n<p>Let&#8217;s now see the details of what happens in these steps.<\/p>\n<p>&nbsp;<\/p>\n<h5 id=\"t1\"><strong>1. Create an Unsecured Web Application<\/strong><\/h5>\n<p>I&#8217;m sure by now you know how to create a starter application. So create one. Remember to add the following dependencies:<\/p>\n<ul>\n<li>Thymeleaf<\/li>\n<li>spring-web-starter<\/li>\n<\/ul>\n<p>After creating the application and adding the dependencies, the follow the steps:<\/p>\n<p><strong>Step 1:<\/strong> In the templates folder, create a html page. Call it index.html.<\/p>\n<p><strong>Step 2:<\/strong> Write some welcome message in this html file<\/p>\n<p>Note: the templates folder is found inside the src\/main\/resources folder<\/p>\n<p><strong>Step 3:<\/strong> Create\u00a0 class and call it HomeController.<\/p>\n<p><strong>Step 4:<\/strong> Annotate this class with the @Controller annotation<\/p>\n<p><strong>Step 5:<\/strong> Write a method inside this class to return the index.html page.<\/p>\n<p><strong>Step 6:<\/strong> Annotate this method with the @RequestMapping of &#8220;\/home&#8221;<\/p>\n<p>The HomeController class would now look like this.<\/p>\n<p>&nbsp;<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #555555; font-weight: bold;\">@Controller<\/span>\n<span style=\"color: #008800; font-weight: bold;\">public<\/span> <span style=\"color: #008800; font-weight: bold;\">class<\/span> <span style=\"color: #bb0066; font-weight: bold;\">HomeController<\/span> <span style=\"color: #333333;\">{<\/span>\n\t\n\t<span style=\"color: #555555; font-weight: bold;\">@RequestMapping<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"\/home\"<\/span><span style=\"color: #333333;\">)<\/span>\n\t<span style=\"color: #008800; font-weight: bold;\">public<\/span> String <span style=\"color: #0066bb; font-weight: bold;\">goHome<\/span><span style=\"color: #333333;\">()<\/span> <span style=\"color: #333333;\">{<\/span>\n\t\t<span style=\"color: #008800; font-weight: bold;\">return<\/span> <span style=\"background-color: #fff0f0;\">\"index\"<\/span><span style=\"color: #333333;\">;<\/span>\n\t<span style=\"color: #333333;\">}<\/span>\n\t\n<span style=\"color: #333333;\">}<\/span>\n<\/pre>\n<p>&nbsp;<\/p>\n<p>The index.html page would look like as shown below:<\/p>\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #557799;\">&lt;!DOCTYPE html&gt;<\/span>\n<span style=\"color: #007700;\">&lt;html&gt;<\/span>\n<span style=\"color: #007700;\">&lt;head&gt;<\/span>\n<span style=\"color: #007700;\">&lt;meta<\/span> <span style=\"color: #0000cc;\">charset=<\/span><span style=\"background-color: #fff0f0;\">\"ISO-8859-1\"<\/span><span style=\"color: #007700;\">&gt;<\/span>\n<span style=\"color: #007700;\">&lt;title&gt;<\/span>Spring Security<span style=\"color: #007700;\">&lt;\/title&gt;<\/span>\n<span style=\"color: #007700;\">&lt;\/head&gt;<\/span>\n<span style=\"color: #007700;\">&lt;body&gt;<\/span>\n<span style=\"color: #007700;\">&lt;br&gt;<\/span>\n<span style=\"color: #007700;\">&lt;h2<\/span> <span style=\"color: #0000cc;\">align=<\/span><span style=\"background-color: #fff0f0;\">\"center\"<\/span><span style=\"color: #007700;\">&gt;<\/span> Welcome to Spring Security<span style=\"color: #007700;\">&lt;\/h2&gt;<\/span>\n<span style=\"color: #007700;\">&lt;\/body&gt;<\/span>\n<span style=\"color: #007700;\">&lt;\/html&gt;<\/span>\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Now you can launch the application. Visit <a href=\"#\">http:\/\/localhost\/home<\/a>. You will notice that there is no security. You can easily access that page.<\/p>\n<p>Let&#8217; s now add authentication.<\/p>\n<p>&nbsp;<\/p>\n<h5 id=\"t2\"><strong>2. Add Default Spring Authentication<\/strong><\/h5>\n<p>You can add a default authentication. If you do this, then you will have a simple login form created for you. Also you with have a username and password.<\/p>\n<p>So simply add on dependency. That dependency is\u00a0spring-boot-starter-security<\/p>\n<p>Go to Maven repository to get this dependency. Or you can just copy it from below.<\/p>\n<p>Put it in the depencencies section of your pom.xml file.<\/p>\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #007700;\">&lt;dependency&gt;<\/span>\n    <span style=\"color: #007700;\">&lt;groupId&gt;<\/span>org.springframework.boot<span style=\"color: #007700;\">&lt;\/groupId&gt;<\/span>\n    <span style=\"color: #007700;\">&lt;artifactId&gt;<\/span>spring-boot-starter-security<span style=\"color: #007700;\">&lt;\/artifactId&gt;<\/span>\n    <span style=\"color: #007700;\">&lt;version&gt;<\/span>2.1.6.RELEASE<span style=\"color: #007700;\">&lt;\/version&gt;<\/span>\n<span style=\"color: #007700;\">&lt;\/dependency&gt;<\/span>\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Now, save everything. Then launch the the application. Visit the same home page<a href=\"#\">\u00a0http:\/\/localhost\/home<\/a>.<\/p>\n<p>You will now notice that you are presented with a login page:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1014 size-large\" src=\"https:\/\/www.kindsonthegenius.com\/wp-content\/uploads\/2020\/09\/Login-Page-for-Spring-Authentication-1024x585.jpg\" alt=\"Login Page for Spring Authentication\" width=\"735\" height=\"420\" \/><\/p>\n<p>Now, the default username is &#8220;user&#8221;. You\u00a0 can find the password in the console output as shown below:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1015 size-full aligncenter\" src=\"https:\/\/www.kindsonthegenius.com\/wp-content\/uploads\/2020\/09\/Generated-Password.jpg\" alt=\"Generated Password\" width=\"920\" height=\"187\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Next, we would add login information to the application propeties file<\/p>\n<p>&nbsp;<\/p>\n<h5 id=\"t4\"><strong>4. Add login details in the application.propeties<\/strong><\/h5>\n<p>Open the application.properties file<\/p>\n<p>Add the following login details. You can also use username and password of your choice.<\/p>\n<p>&nbsp;<\/p>\n<pre style=\"margin: 0; line-height: 125%;\">spring<span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">security<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">user<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">username<\/span><span style=\"color: #333333;\">=<\/span><span style=\"background-color: #fff0f0;\">\"kindson\"<\/span>\nspring<span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">security<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">user<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">password<\/span><span style=\"color: #333333;\">=<\/span><span style=\"background-color: #fff0f0;\">\"root\"<\/span>\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Now, launch the application. Notice that there is no password generated.<\/p>\n<p>Go ahead to test the application using these details.<\/p>\n<p><span style=\"color: #ff0000;\">Note: for some reason, this did not work when I tested it. So if it does not work for you, just move on to the next part.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5 id=\"t5\"><strong>5. Extend the WebSecurityConfigurerAdapter<\/strong><\/h5>\n<p>We are going to create a class that extends WebSecurityConfigurerAdapter. According to the <a href=\"https:\/\/spring.io\/blog\/2013\/07\/03\/spring-security-java-config-preview-web-security\/\" target=\"_blank\" rel=\"noopener\">Spring documentation<\/a>, the WebSecurityConfigurerAdapter works with the @WebSecurity annotation to provide web-based security. It does the following:<\/p>\n<ul>\n<li>requires that the user be authenticated before accessing resources<\/li>\n<li>creates a user with default credentials of &#8216;user&#8217;\/&#8217;password&#8217; and role of &#8216;ROLE_USER&#8217;<\/li>\n<li>enables basic HTTP and form authentication<\/li>\n<li>redirects user to login page<\/li>\n<\/ul>\n<p><strong>Follows the steps below to extend WebSecurityCofigurer:<\/strong><\/p>\n<p><strong>Step 1:<\/strong> Create a class and give it a name <em>AppSecurityConfig<\/em> (you can use another name if you want)<\/p>\n<p><strong>Step 2:<\/strong> Make this class extend <em>WebSecurityConfigurerAdapter<\/em> (just add extends <em>WebSecurityConfigurer<\/em> to the class)<\/p>\n<p><strong>Step 3:<\/strong> Annotate the class with the following annotations:<\/p>\n<ul>\n<li>@EnableWebSecurity<\/li>\n<li>@Configuration<\/li>\n<\/ul>\n<p><strong>Step 4:<\/strong> Write a method that overrides the <em>userDetailsService()<\/em> method (to do this, right-click and choose Source &gt;&gt; Override\/Implement Methods. Choose UserDetailsService and click ok)<\/p>\n<p><strong>Step 5:<\/strong> Annotate this method with the <em>@Bean<\/em> annotation. (also make sure the @Override annotation is added)<\/p>\n<p><strong>Step 6:<\/strong> Inside this method,\u00a0 create an empty new ArrayList of UserDetails. I call it users.<\/p>\n<p><strong>Step 7:<\/strong> Create a few UserDetails objects<\/p>\n<p><strong>Step 8:<\/strong> Add the objects to the List<\/p>\n<p><strong>Step 9:<\/strong> Return a new InMemoryUserDetailsManager() giving it the users list.<\/p>\n<p>The final class would be as shown below:<\/p>\n<p>&nbsp;<\/p>\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #555555; font-weight: bold;\">@Configuration<\/span>\n<span style=\"color: #555555; font-weight: bold;\">@EnableWebSecurity<\/span>\n<span style=\"color: #008800; font-weight: bold;\">public<\/span> <span style=\"color: #008800; font-weight: bold;\">class<\/span> <span style=\"color: #bb0066; font-weight: bold;\">ApplicationSecurityConfig<\/span> <span style=\"color: #008800; font-weight: bold;\">extends<\/span> WebSecurityConfigurerAdapter <span style=\"color: #333333;\">{<\/span>\n\n\t<span style=\"color: #555555; font-weight: bold;\">@Override<\/span>\n\t<span style=\"color: #555555; font-weight: bold;\">@Bean<\/span>\n\t<span style=\"color: #008800; font-weight: bold;\">protected<\/span> UserDetailsService <span style=\"color: #0066bb; font-weight: bold;\">userDetailsService<\/span><span style=\"color: #333333;\">()<\/span> <span style=\"color: #333333;\">{<\/span>\n\t\t \n\t\tList<span style=\"color: #333333;\">&lt;<\/span>UserDetails<span style=\"color: #333333;\">&gt;<\/span> users <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">new<\/span> ArrayList<span style=\"color: #333333;\">&lt;&gt;();<\/span>\n\t\tusers<span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">add<\/span><span style=\"color: #333333;\">(<\/span>User<span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">withDefaultPasswordEncoder<\/span><span style=\"color: #333333;\">().<\/span><span style=\"color: #0000cc;\">username<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"kindson\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #0000cc;\">password<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"root\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #0000cc;\">roles<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"USER\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #0000cc;\">build<\/span><span style=\"color: #333333;\">());<\/span>\n\t\tusers<span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">add<\/span><span style=\"color: #333333;\">(<\/span>User<span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">withDefaultPasswordEncoder<\/span><span style=\"color: #333333;\">().<\/span><span style=\"color: #0000cc;\">username<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"jadon\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #;\">password<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"pass\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #0000cc;\">roles<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"USER\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #0000cc;\">build<\/span><span style=\"color: #333333;\">());<\/span>\n\t\tusers<span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">add<\/span><span style=\"color: #333333;\">(<\/span>User<span style=\"color: #333333;\">.<\/span><span style=\"color: #0000cc;\">withDefaultPasswordEncoder<\/span><span style=\"color: #333333;\">().<\/span><span style=\"color: #0000cc;\">username<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"solace\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #0000cc;\">password<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"pass\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #0000cc;\">roles<\/span><span style=\"color: #333333;\">(<\/span><span style=\"background-color: #fff0f0;\">\"USER\"<\/span><span style=\"color: #333333;\">).<\/span><span style=\"color: #0000cc;\">build<\/span><span style=\"color: #333333;\">());<\/span>\n\t\t\n\t\t<span style=\"color: #008800; font-weight: bold;\">return<\/span> <span style=\"color: #008800; font-weight: bold;\">new<\/span> <span style=\"color: #0066bb; font-weight: bold;\">InMemoryUserDetailsManager<\/span><span style=\"color: #333333;\">(<\/span>users<span style=\"color: #333333;\">);<\/span>\n\t\t\n\t<span style=\"color: #333333;\">}<\/span>\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Here, we created three users: kindson, jadon and solace.<\/p>\n<p><strong>Step 10:<\/strong> Launch the application. Test it using the three users we have created.<\/p>\n<p>If everything works fine, then you have done well. Congrats! Also feel free to follow the<a href=\"https:\/\/youtu.be\/vZ-BAFMe4Bo\" target=\"_blank\" rel=\"noopener\"> video lesson<\/a> if it is easier for you to follow<\/p>\n<p>&nbsp;<\/p>\n<h5 id=\"t8\"><strong>8. Next Steps<\/strong><\/h5>\n<p>In real applications, however, you probably will not create users this way. Normally, user details would be stored in a database. So the question is, how do we achieve this?<\/p>\n<p>The would be explained in the <a href=\"https:\/\/kindsonthegenius.com\/tempsite\/spring-security-tutorial-storing-user-credential-in-mysql-database\/\">next tutorial &#8211; Getting Username and Password from MySQL Database.<\/a><\/p>\n<p>Remember to watch the video lessons below:<\/p>\n<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/KXjkcK65iqQ\" width=\"100%\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><\/p>\n<p>The complete video lessons are given below<\/p>\n<ul>\n<li>Part 1 &#8211; Add Login Page <a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https:\/\/www.youtube.com\/watch?v=KXjkcK65iqQ\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/KXjkcK65iqQ<\/a><\/li>\n<li>Part 2 &#8211; Using InMemoryUserDetailsManager <a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https:\/\/www.youtube.com\/watch?v=gWtC-XDCjro\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/gWtC-XDCjro<\/a><\/li>\n<li>Part 3 &#8211; Configure MySQL Database <a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https:\/\/www.youtube.com\/watch?v=0Vd6vgZIdb4\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/0Vd6vgZIdb4<\/a><\/li>\n<li>Part 4 &#8211; Add Dependencies, Create Entity <a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https:\/\/www.youtube.com\/watch?v=Cl70MhTpLeo\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/Cl70MhTpLeo<\/a><\/li>\n<li>Part 5 &#8211; Create the User Repository <a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https:\/\/www.youtube.com\/watch?v=0InkRRgH50k\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/0InkRRgH50k<\/a><\/li>\n<li>Part 6 &#8211; Create the Service Layer(UserDetails) <a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https:\/\/www.youtube.com\/watch?v=3acvy0PNi8E\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/3acvy0PNi8E<\/a><\/li>\n<li>Part 7 &#8211; Implement UserDetails <a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https:\/\/www.youtube.com\/watch?v=MHsN7e3BEio\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/MHsN7e3BEio<\/a><\/li>\n<li>Part 8 &#8211; Configure Authentication Provider <a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https:\/\/www.youtube.com\/watch?v=2N6p87WYUgI\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/2N6p87WYUgI<\/a><\/li>\n<\/ul>\n<p>Also subscribe for updates.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I would teach you how to work with Spring Security. Tutorial 1 &#8211; Introduction to Spring Security\u00a0 Tutorial 2 &#8211; Storing Login Details in MySQL &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[414],"tags":[],"class_list":["post-1935","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/posts\/1935","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/comments?post=1935"}],"version-history":[{"count":1,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/posts\/1935\/revisions"}],"predecessor-version":[{"id":2103,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/posts\/1935\/revisions\/2103"}],"wp:attachment":[{"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/media?parent=1935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/categories?post=1935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/tags?post=1935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}