具有单点登录的ADFS / Web Api / Angularjs

时间:2015-05-28 22:14:48

标签: angularjs asp.net-web-api adfs adal

有人知道如何使用ADFS,Web Api 2和Angularjs在同一个域内实现单点登录吗?我创建了一个带有MVC模板(.Net 4.5)的ASP.NET项目,并设置为on-permises org。与ADFS集成的身份验证,我得到了一切工作(成功登录)。我的主要问题是,如何从angularjs中的API获取jwt令牌?在我做了研究之后,如果不使用MVC控制器作为中间人,看起来不可能单点登录,所以我可以从ADFS获取令牌,然后我可以解析jwt并获取我正在寻找的信息(声明) ?如何从MVC控制器获取令牌?举个例子?我目前的设置是Angularjs-> MVC Controller-> Web Api-> ADFS,还有更好的建议吗? MVC控制器真的是多余的,这是我需要它的唯一原因,这是因为实现单点登录。

1 个答案:

答案 0 :(得分:1)

现在有一种方法可以使用 Microsoft的ADAL库从角度SPA中直接发出 JWT (请参阅此sample例如),所以你不再需要MVC层了。

此库主要用于Azure AD,但通过一些调整,您可以将它与ADFS一起使用,您只需要在app.js文件中填写以下值:

instance: 'https://{your-adfs-url}/', 
tenant: 'adfs', // this is always 'adfs'
clientId: 'Enter your client ID (as registered under ADFS) here e.g. e9a5a8b6-8af7-4719-9821-0deef255f68e',

ADFS 方面,您需要在 ADFS 下注册您的应用作为应用程序组,有关详细信息,请参阅此technet {{ 3}}