I'm building a WebAPI project using ASP.NET 5/CoreCLR. I have implemented Identity 3 and that works fine. I plan to allow users to use the WebAPI from either a browser or an app (mobile, or third-party like Kodi or foobar2000).
I want to allow "administrative" account tasks (changing password, deleting stuff, etc..) only from the browser and not from the third-parties. The apps should have access only to a restricted amount of controllers or actions. On top of that, I'd like to make it easier for users to authenticate themselves. I don't want them to put their login and password in an app (since these credentials allow to do administrative tasks on their account). Ideally I'd like to add a "third party app" authentication. Since the actions won't be sensitive, I was thinking of providing the ability to generate "API Keys" which would be short.
I'm thinking of a workflow where users would go to their Account page from the browser, click "Generate Third-Party Credentials", and get a 6 or 8 characters-long string to use from the third-party app. I might apply some HMAC later on.
What I'm wondering is what would be the 'proper' (conceptually) way to implement that on top of Identity 3. Is it possible, for instance, to create an identity Claim tied to a user?