我有一個身份驗證服務的Web API,對於一個WPF客戶端,設置是這樣的:因爲它在如何在Web API Auth服務中獲得AuthTicket中包含的聲明?
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
...
}
}
和
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
...
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
ApplicationCanDisplayErrors = true,
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true, // TODO Make false to deploy
};
app.UseOAuthAuthorizationServer(OAuthOptions);
}
}
我只用/Token
端點到目前爲止,最少給予我的不記名牌。我在成功身份驗證時收到的故障單有問題和失效日期,不記名令牌和我的用戶名。
如何獲得用戶的聲明(也許角色)?有什麼我可以在這裏做的,或者我會在API之後進行申請,在auth之後,將它們和驗證票集合起來,像WPF客戶端的Principal
對象?
我是否可以在WPF應用程序中包含一些標識組件以幫助從標記中提取聲明,以及有關如何執行此操作的任何建議?
所有信息令牌本身內部加密的,所以要得到它,你必須對令牌進行解密。當然,你不能在客戶端上有解密密鑰 - 只能在服務器上使用。所以是的 - 你必須在auth後通過API請求它們(理論上你可以將它們與auth響應一起發送,但不確定內置oauth是否有這種可能性)。 – Evk
但我不需要數據庫查詢來請求它們,只需解碼我必須發送的身份驗證令牌,然後發回聲明。如果您願意,請提供關於如何解密令牌的提示?或者這是一個很長的故事? – ProfK
您想避免單獨致電您的服務以獲取理賠嗎?想要將它們與令牌本身結合在一起(因此,從調用到/ token端點)? – Evk