Android Azure ACS用于ADFS移动身份验证的替代方案

Android Azure ACS用于ADFS移动身份验证的替代方案,android,ios,asp.net,jwt,adfs2.0,Android,Ios,Asp.net,Jwt,Adfs2.0,我一直在使用azure ACS通过公司ADF对我的asp.net服务器应用程序的移动客户端进行身份验证。我不仅在web浏览器中,而且在移动应用程序中都能很好地工作(使用webview获得jwt令牌,然后将其发送到服务器进行验证并生成应用程序身份验证令牌) 但不幸的是,我不得不寻找另一种选择 使用我成功地让ADFS直接进行身份验证,而无需任何外部服务,这对我来说是一个巨大的优势,因为一些客户的intranet上可能有internet限制 问题开始于尝试为本机客户端(Windows WPF、Andr

我一直在使用azure ACS通过公司ADF对我的asp.net服务器应用程序的移动客户端进行身份验证。我不仅在web浏览器中,而且在移动应用程序中都能很好地工作(使用webview获得jwt令牌,然后将其发送到服务器进行验证并生成应用程序身份验证令牌)

但不幸的是,我不得不寻找另一种选择

使用我成功地让ADFS直接进行身份验证,而无需任何外部服务,这对我来说是一个巨大的优势,因为一些客户的intranet上可能有internet限制

问题开始于尝试为本机客户端(Windows WPF、Android和iOS)实现此功能,因为我找不到解决这些问题的方法

适用于Android和iOS的ADAL。这个限制是一个很大的禁忌

我找到了第三方身份验证提供商,但我真的想避免使用外部服务

还有Azure B2C身份验证,但它在外部服务方面也存在同样的问题


有没有一种方法可以直接在ADF上实现我与Azure ACS的合作?我需要的是一种直接从ADFS获取jwt令牌(甚至SAML2令牌)的方法。

ACS使用WS-Fed,该示例使用WS-Fed作为协议

移动设备使用OAuth,这就是为什么您需要ADFS 3.0(有限支持)或ADFS 4.0(完全支持加上OpenID连接)

如果您只想让ADFS返回JWT令牌而不是SAML令牌,请参考以下内容

设置ADFSRelyingPartyTrust–目标标识符“urn:MyWebApp”-启用JWT $true

但是,这需要ADFS 3.0


另一种方法是使用WCF。这将调用WS-Fed活动配置文件,该配置文件将SAML令牌作为web服务返回,如下所示。

我为自己的需要创建了一个自定义解决方案。基本上,我实现了一个类似于ACS流的解决方案

这些应用程序在webview上加载一个特殊的登录页面,将浏览器重定向到ADFS挑战页面,并最终回调到我的webapp。在那里,我通过使用通知javascript调用使用令牌通知应用程序,就像ACS那样:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Loading...</title>
    <script type="text/javascript">
        try{
            window.external.notify('@ViewBag.Result');
        }
        catch(err){
            alert("Error ACS50021: window.external.notify is not registered.");
        }
    </script>
</head>
<body>
</body>
</html>

加载。。。
试一试{
window.external.notify('@ViewBag.Result');
}
捕捉(错误){
警报(“错误ACS50021:window.external.notify未注册”);
}
这样,我的应用程序将不会直接处理用户凭据,我不再需要外部服务:)


与ACS不同的是,我可以直接控制最后一步,我可以通过重定向将令牌导出到一个自定义协议,该协议有助于在iOS上实现(在ACS上,我们必须将javascript注入webview中的页面才能实现这一点)。

谢谢你,但不幸的是,这些替代方案都不适合我。我最多只能使用ADFS 2.0,WCF替代方案要求我的应用程序知道广告上的用户凭据,这对一些客户来说是一个真正的问题。是的,尽管有使用证书的WCF流。