Swagger UI将返回API数据,但我的授权调用返回“权限被拒绝”

时间:2017-05-25 03:11:17

标签: c# rest swagger azure-active-directory webapi2

所以我相信我的API服务应该没问题,因为我可以通过Swagger返回结果?我是从WPF项目调用的。我启动程序,它要求我登录,然后继续,并告诉我,我没有权限。

我对WebAPI2非常环保,并认为我可能只是错误地构建了我的呼叫。我似乎从我的网站上正确地获得了一个令牌,唯一的问题是当我尝试实际调用API获取数据时。

这是我的代码:

let coordinates = CLLocationCoordinate2D(latitude: milatitud!, longitude: milongitud!)


        let annotation = MKPointAnnotation()

        annotation.coordinate = coordinates
        annotation.title = "JuanJo"
        self.map.addAnnotation(annotation)

        //print ("4444444444")


        for annotation: MKAnnotation in self.map.annotations {

            let anView = self.map.view(for: annotation)

            if (anView != nil)


            {
                let url = URL(string: link!)
                self.imagen.af_setImage(withURL: url!, placeholderImage: UIImage(named: "usuarioprevia.jpeg"), filter: CircleFilter(), imageTransition: .crossDissolve(0.5), runImageTransitionIfCached: true, completion: nil)

                anView?.image = "image downloaded from firebase with alamofireimage"









            }

编辑:或许有助于注意我使用的是由Rest API调用的DataAPI,其余的API由Azure AD保护。

编辑:我正在从便携式类库中调用。

编辑:好吧,我正在接受身份验证,但似乎没有任何区别。如果我完全删除了Auth标头,我会得到相同的结果

1 个答案:

答案 0 :(得分:1)

对于受Azure AD保护的Web API,令牌似乎不正确。请检查令牌中的aud声明,该声明应与您在Web API项目中配置的Audience匹配。您可以通过解析此site中的令牌来检查aud声明。

如果您仍然遇到问题,请分享您保护网络API的代码。

更新

如果您使用如下所示的 Express 模式,则需要使用与网络API相关联的应用获取access_token。enter image description here

如果您使用高级模式,我们还应该使用该应用获取令牌,而ResourceUri应该与您在允许的令牌听众中配置的值相匹配下面:enter image description here