Web API和MVC中的Azure移动服务令牌验证
本文关键字:移动 服务 令牌 验证 Azure 中的 API MVC Web | 更新日期: 2023-09-27 18:28:08
我有一个Xamarin移动应用程序,它使用Azure移动服务SDK来针对社交提供商对用户进行身份验证。我获取令牌并将其作为承载令牌附加到命中Web API ASP.NET应用程序(我正在部署为Azure云服务)的http请求。
我需要验证承载令牌,并在我的ApiController中获得一个ClaimsIdentity。我需要使用移动服务.NET后端nuget包吗?我该怎么办?
编辑:
-
创建了一个空的ASP.NET应用程序添加了一个Web API控制器
-
已安装移动服务.NET后端nuget包
-
为密钥MS_MobileServiceName、MS_MasterKey和,Azure管理控制台中值的MS_ApplicationKey
-
在我的HttpGet操作上设置[AuthorizeLevel(AuthorizationLevel.User)]在我的ApiController 中
-
铸造用户到服务用户
-
通过Azure从Google Auth创建带有承载令牌的http请求移动服务SDK
-
用户为空!
使用等属性
[AuthorizeLevel(AuthorizationLevel.Anonymous)]
[AuthorizeLevel(AuthorizationLevel.User)]
在API中的方法上验证,具体取决于您想要的角色。
然后使用
var currentUser = User as ServiceUser;
若AuthorizationLevel不是Anonymous,则获取方法中的当前用户。
并根据需要设置您的AppSettings。如果要在localhost上测试MobileService,请更改MasterKey和ApplicationKey。
<appSettings>
<!-- Use these settings for local development. After publishing to
Mobile Services, these settings will be overridden by the values specified
in the portal. -->
<add key="MS_MobileServiceName" value="[NAME HERE]" />
<add key="MS_MasterKey" value="[INSERT HERE]" />
<add key="MS_ApplicationKey" value="[INSERT HERE]" />
<add key="MS_MicrosoftClientID" value="Overridden by portal settings" />
<add key="MS_MicrosoftClientSecret" value="Overridden by portal settings" />
<add key="MS_FacebookAppID" value="Overridden by portal settings" />
<add key="MS_FacebookAppSecret" value="Overridden by portal settings" />
<add key="MS_GoogleClientID" value="Overridden by portal settings" />
<add key="MS_GoogleClientSecret" value="Overridden by portal settings" />
<add key="MS_TwitterConsumerKey" value="Overridden by portal settings" />
<add key="MS_TwitterConsumerSecret" value="Overridden by portal settings" />
<add key="MS_AadClientID" value="Overridden by portal settings" />
<add key="MS_AadTenants" value="Overridden by portal settings" />
<!-- When using this setting, be sure to also set the Notification Hubs connection
string named "MS_NotificationHubConnectionString". -->
<add key="MS_NotificationHubName" value="Overridden by portal settings" />
<add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://[your namespace].servicebus.windows.net;SharedSecretIssuer=owner;SharedSecretValue=[your secret]" />
</appSettings>