Just start building. "The journey of a thousand miles begins with a single step" and all that. It sounds cliched, and maybe it is, but there's real truth there. Just start... write a line of code
right now, even it is nothing more than
public static void main( String[] args )
{
// TODO: implement the rest here...
System.out.println( "done" );
}
and just start adding to it. If you get to a point where you don't know how to solve a particular problem, stop, google, read, experiment, fail, learn, retry, until you figure it out. Move on to the next step.
Yes, progress will be slow at the beginning. As you alluded to, doing things like auth/login quickly get complicated, especially if you are dealing with things like OAuth, OpenID, etc, and you have to learn one 3rd party library after another... which probably won't be well documented, and which will require you to read source code, use StackOverflow, use trial-and-error, etc. That's OK, that's just the way this stuff goes sometimes.
Over time, it does get easier in a sense, like most things. You gain intuition for solving certain problems, rooted in your experience. And the more you understand about how things work "in the large" the better you get at solving certain kinds of problems. Unfortunately, you usually also wind up taking on progressively more challenging problems, so you always feel like you're struggling just the same, even if you are actually moving much faster.
When I first started mountain biking, an experienced rider told me "it never gets any easier, you just go faster". In many ways, programming is the same way. But, like mountain biking, it has the potential to be a total blast. And unlike MTB (for the most part) you can actually make money doing this.