Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api 如何使用IdentityServer3执行登录?_Asp.net Web Api_Owin_Fiddler_Identityserver3 - Fatal编程技术网

Asp.net web api 如何使用IdentityServer3执行登录?

Asp.net web api 如何使用IdentityServer3执行登录?,asp.net-web-api,owin,fiddler,identityserver3,Asp.net Web Api,Owin,Fiddler,Identityserver3,我正在开发一个用于IdentityServer3的web api 我已经运行了服务器和web api,但是我很难弄清楚如何让用户从移动应用程序登录到服务器 我的问题是:如果我为identity server启用了隐式流,那么用户如何从fiddler之类的工具登录以在成功身份验证后接收他们的令牌 我知道令牌端点是: 我还知道授权终结点是: 但是用户在哪里登录呢?我是否必须为用户创建自己的视图才能传递用户名和密码并接收令牌?更具体地说,我的问题是如何从fiddler登录,而不是从我必须呈现给用户

我正在开发一个用于IdentityServer3的web api

我已经运行了服务器和web api,但是我很难弄清楚如何让用户从移动应用程序登录到服务器

我的问题是:如果我为identity server启用了隐式流,那么用户如何从fiddler之类的工具登录以在成功身份验证后接收他们的令牌

我知道令牌端点是:

我还知道授权终结点是:


但是用户在哪里登录呢?我是否必须为用户创建自己的视图才能传递用户名和密码并接收令牌?更具体地说,我的问题是如何从fiddler登录,而不是从我必须呈现给用户的专用视图登录。

IdentityServer是一个多功能的OpenID+OAuth 2实现,因此,隐式流完全由IdentityServer本身处理,使用授权端点作为身份验证请求和令牌颁发过程之间的桥梁

隐式流的本质不允许诸如Fiddler之类的客户端(更准确地说,是不能直接呈现网页的客户端)进行身份验证。 为了进一步理解为什么我将尝试在Web API/IdentityServer场景中重现OAuth隐式授权的步骤:

  • 客户端尝试访问受保护的资源终结点(例如,用
    Authorize
    修饰的Web API控制器)
  • 框架通过验证令牌(例如,检查
    授权
    标题并验证其内容)来检查用户是否已通过身份验证
  • 如果用户未通过身份验证,框架将以401状态代码响应
  • 然后,客户端必须通过使用浏览器窗口(例如,在移动应用程序中创建
    WebView
    /
    UIWebView
    ,在浏览器内打开弹出窗口等)转到授权端点,向授权服务器(IdSrv3)请求令牌
  • 然后,用户插入其凭据,身份验证服务器验证这些凭据,如果有效,则使用重定向进行响应,该重定向在查询字符串内(或哈希之后)包含已颁发的令牌
  • 客户端接收重定向响应并从URI中提取令牌
  • 客户端现在可以向资源服务器发送经过身份验证的请求(Web API)
  • 如您所见,您无法对无法固有地呈现步骤4中返回的登录页面的客户端进行身份验证。对于那些类别的客户端资源所有者凭据流可能是更好的解决方案


    您需要在IdentityServer配置中为您的客户端启用这样的授权(您可以按照下面的说明了解如何实现),然后为令牌端点设置
    密码
    授予类型
    ,并且。

    IdentityServer是一个多合一的OpenID+OAuth 2实现,因此,隐式流完全由IdentityServer本身处理,使用授权端点作为身份验证请求和令牌颁发过程之间的桥梁

    隐式流的本质不允许诸如Fiddler之类的客户端(更准确地说,是不能直接呈现网页的客户端)进行身份验证。 为了进一步理解为什么我将尝试在Web API/IdentityServer场景中重现OAuth隐式授权的步骤:

  • 客户端尝试访问受保护的资源终结点(例如,用
    Authorize
    修饰的Web API控制器)
  • 框架通过验证令牌(例如,检查
    授权
    标题并验证其内容)来检查用户是否已通过身份验证
  • 如果用户未通过身份验证,框架将以401状态代码响应
  • 然后,客户端必须通过使用浏览器窗口(例如,在移动应用程序中创建
    WebView
    /
    UIWebView
    ,在浏览器内打开弹出窗口等)转到授权端点,向授权服务器(IdSrv3)请求令牌
  • 然后,用户插入其凭据,身份验证服务器验证这些凭据,如果有效,则使用重定向进行响应,该重定向在查询字符串内(或哈希之后)包含已颁发的令牌
  • 客户端接收重定向响应并从URI中提取令牌
  • 客户端现在可以向资源服务器发送经过身份验证的请求(Web API)
  • 如您所见,您无法对无法固有地呈现步骤4中返回的登录页面的客户端进行身份验证。对于那些类别的客户端资源所有者凭据流可能是更好的解决方案


    您需要在IdentityServer配置中为您的客户机启用此类授权(您可以按照了解如何进行),然后为令牌端点设置
    grant\u type
    to
    password

    创建一个请求。

    我已经阅读了文档,并且已经完成了三个教程……请不要将我发送到identity server教程,除非您提供了关于它们的说明。我承认我不了解一切,因为我还是OAuth2.0和OpenIDConnect 1.0的新手,但我只需要知道登录过程。现在,当我向identity server中的控制器添加authorize属性时,会出现一个登录屏幕,但我不知道如何以RESTful方式将凭据传递给服务器。谢谢我已经阅读了文档,并且已经完成了三个教程…请不要将我发送到identity server教程,除非您提供了关于它们的说明。我承认我不了解一切,因为我还是OAuth2.0和OpenIDConnect 1.0的新手,但我只需要知道登录过程。现在,当我向identity server中的控制器添加authorize属性时,会出现一个登录屏幕,但我不知道如何以RESTful方式将凭据传递给服务器。谢谢非常感谢你的回答,费德里科。在查看了参数之后,您将在哪里进行操作