title: Setting up Keycloak for authentication
body: <p>I am evaluating KeyCloak as an OpenID provider, and I'm confused about how to set it up. I'm just trying to get the simplest possible setup working. </p>
  
  <p>So far I've done this:</p>
  
  <ol>
  <li><p>Created a realm.</p></li>
  <li><p>Registered my web application as a new client. Client protocol "open-id" and Access Type "confidential"</p></li>
  <li><p>Created a user, and set a password for it.</p></li>
  </ol>
  
  <p>Then I access my web app and it redirects to the KeyCloak login page, but I keep getting "Invalid username or password." </p>
  
  <p>I think I might have missed some steps with regards to client roles. Is my login failure related to this? The documentation is poor and I just want to get up and running with a basic setup.</p>
  
  <p>This is the (partial) stack trace I'm getting.</p>
  
  <pre><code>10:13:56,201 WARN  [org.keycloak.services] (default task-3) KC-SERVICES0013: Failed authentication: org.keycloak.authentication.AuthenticationFlowException
          at org.keycloak.keycloak-services@8.0.1//org.keycloak.authentication.AuthenticationProcessor.authenticationAction(AuthenticationProcessor.java:964)
          at org.keycloak.keycloak-services@8.0.1//org.keycloak.services.resources.LoginActionsService.processFlow(LoginActionsService.java:294)
          at org.keycloak.keycloak-services@8.0.1//org.keycloak.services.resources.LoginActionsService.processAuthentication(LoginActionsService.java:265)
          at org.keycloak.keycloak-services@8.0.1//org.keycloak.services.resources.LoginActionsService.authenticate(LoginActionsService.java:261)
          at org.keycloak.keycloak-services@8.0.1//org.keycloak.services.resources.LoginActionsService.authenticateForm(LoginActionsService.java:322)
          at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  </code></pre>