使用 ADFS WS-Fed 协议进行身份验证和授权

Authenticating and Authorizing using ADFS WS-Fed protocol

我正在努力在我的应用程序中实施身份验证和授权。

身份验证: 我使用 WS-Fed 登录协议由 ADFS 服务器配置并启用了 JWT。创建了 MVC 应用程序并配置为使用 WS-Fed 对用户进行身份验证。

现在的问题是如何在成功登录后将 JWT 令牌存储在我的 cookie 中?

这是我的代码

public partial class Startup
    {
        private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
        private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];

        public void ConfigureAuth(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
            app.UseCookieAuthentication(new CookieAuthenticationOptions{ CookieName="JwtToken",CookieHttpOnly=false});
            app.UseWsFederationAuthentication(
                new WsFederationAuthenticationOptions
                {
                    Wtrealm = realm,
                    MetadataAddress = adfsMetadata
                });
        }
    }

授权 我有一个单独的 Web API 项目。我想通过在每个请求的 header 中传递 JWT 令牌来授权我的 api,但不确定如何从 cookie 中提取 JWT 令牌并将其传递到网络 api 进行验证。

我在这里找到了答案 http://www.software-architects.com/devblog/2015/02/02/ADFS-and-ADAL-Lab

ADAL(用于 .NET 和 JavaScript 的 Active Directory 身份验证库)可用于在 mvc 应用程序中获取令牌并在 header 中传递令牌以授权 Web api。