I am investigating how IdentityServer 3 works and I still have problem to fully understand.
In general concept is clear to me but still I am not sure how to implement this on real project.
This is basic example that I am trying to implement in my case: link
I have web api project and I want to call my api methods from any client (mvc, wpf, phone…) So I need implementation that is suitable for all clients.
If I understand well (and probably I am not understand completely), I should have 3 projects:
- Client
- Api
- Project that host IdentityServer
And all projects should have required stuff like on picture: Steps on picture:
- Get token
- Return token
- Call api
- Check if Token is OK
- If Token is fine than return data else show error
My questions are:
- Is my thinking about how this works ok?
- Where I making mistakes?
- Is this example good enough for my case? Am I missing something important?
- Do I have to create project that host IdentityServer, or this is needed just for example code ?
- Does IdentityServer host project must be console application that communicate with api and client(like in example), or in real world this is done differently ?
- Should project that host identity server be aware of Clients and Users ?
- Should some other project except host identity server project be aware of Clients and Users ?
- What is diference between implicit and hybrid flow, what I need in my case and why?
- How do I create my own login view? I want have html page for login if I use web client, but to have wpf login view if I use wpf, also different view for mobile client.
EDIT: I think that I need Resource Owner flow . I supose that resource i view where user type user name and password.