C# 如何在Windows应用商店应用程序和配套网站之间使用相同的Microsoft帐户?

C# 如何在Windows应用商店应用程序和配套网站之间使用相同的Microsoft帐户?,c#,asp.net-mvc,asp.net-web-api,windows-store-apps,asp.net-identity,C#,Asp.net Mvc,Asp.net Web Api,Windows Store Apps,Asp.net Identity,我有一个使用ASP.Net标识的MVC5网站和WebApi。我已将网站配置为使用Microsoft帐户作为外部登录 Windows应用商店应用程序将使用WebApi,用户从网站或应用程序使用其Microsoft帐户时应具有相同的身份。由于用户在使用Windows应用商店应用程序时已登录到其Microsoft帐户,我不希望他们再次输入凭据 我想知道什么是我的应用程序能够访问WebApi的好方法。我是否可以检索Microsoft帐户身份验证令牌并将其传递给我的网站的令牌端点(授予授权码),以便检索令

我有一个使用ASP.Net标识的MVC5网站和WebApi。我已将网站配置为使用Microsoft帐户作为外部登录

Windows应用商店应用程序将使用WebApi,用户从网站或应用程序使用其Microsoft帐户时应具有相同的身份。由于用户在使用Windows应用商店应用程序时已登录到其Microsoft帐户,我不希望他们再次输入凭据


我想知道什么是我的应用程序能够访问WebApi的好方法。我是否可以检索Microsoft帐户身份验证令牌并将其传递给我的网站的令牌端点(授予授权码),以便检索令牌以供我的应用程序用于访问WebApi?还有其他方法吗?

我想避免对我的WebApi的帐户控制器进行更改,因为这个过程实际上不适合网站的MVC部分,因为它不需要重定向到视图等。因此我计划使用自定义授权类型(例如exchange)扩展令牌端点,它将本地令牌返回给消费者。消费者将向令牌端点发送一个请求,请求中包含授权类型的交换、我的应用程序的客户端id和密码、外部提供商的名称(如MicrosoftAccount)以及外部提供商的访问代码。例如,应用程序将发送如下请求:

我将提供ApplicationAuthProvider的GrantCustomExtension方法的实现,伪代码如下

验证客户端id和密码 如果客户端id和密码有效,请使用访问代码从Live SDK获取访问令牌 解析Live SDK访问令牌以检索id值 尝试在AspNetUserLogins表中查找相应的id值 如果找不到登录名,请为该用户添加一条新的AspNetUser记录,并在AspNetUserLogins表中添加一条记录 为用户创建令牌并返回该令牌
一旦应用程序拥有令牌,它就可以存储在凭证储物柜中,用于对WebApi的任何其他调用

不确定为什么会有否决票-我喜欢这个问题,也想找到答案。假设您在WebApi中使用的是承载令牌,您可以使用刷新令牌,并让Windows应用商店应用程序在第一次运行时重新验证一次,然后存储刷新令牌。@BrendanGreen您的意思是从LiveConnect或我的网站的令牌终结点获取并存储刷新令牌?