当组成员尝试获取成员列表时获得禁止的身份验证

Posted

技术标签:

【中文标题】当组成员尝试获取成员列表时获得禁止的身份验证【英文标题】:Getting forbidden auth when group member tries to fetch member list 【发布时间】:2018-04-26 06:57:40 【问题描述】:

我正在尝试使用 getMembers() 获取成员列表,但我收到“错误代码:403,禁止身份验证”,尝试获取成员列表的用户是组的成员,但我如果我对所有者进行相同的操作,他可以​​成功获取列表。

这是我获取成员列表'muc#roomconfig_getmemberlist' : [moderator, participants, visitor]的配置

并且在 xep-045 中也非常清楚地提到“服务还应该将成员列表返回给仅限成员的房间中的任何居住者;即,当房间中的成员时,它不应该产生错误请求成员列表。”

那么我在这里缺少什么?

这些是抓包

发送(0):

<iq to='membersonlygroup@muc.domain' from='92123456@domain/Resource' id='1BO5n-74' type='get'><query xmlns='http://jabber.org/protocol/muc#admin'><item affiliation='member'></item></query></iq>

SMACK: RECV (0):

 `<iq from='membersonlygroup@muc.domain' to='92123456@domain/Resource' id='1BO5n-74' type='error'><query xmlns='http://jabber.org/protocol/muc#admin'><item affiliation='member'/></query><error code='403' type='auth'><forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Administrator privileges required</text></error></iq><r xmlns='urn:xmpp:sm:3'/>`

编辑: 另一件事是成员具有参与者的角色,但我注意到在这种情况下角色值为空。

【问题讨论】:

这不是我熟悉的 SMACK 类型,但我注意到回复说 Administrator privileges required。难道是这个用户的角色没有足够的权限?我还注意到查询显示http://jabber.org/protocol/muc#admin 而不是muc#roomconfig_getmemberlist。它可能会帮助熟悉 smack 的用户显示一些代码。 【参考方案1】:

您能否在服务器端检查您的房间配置。 要创建房间,您需要使用以下配置。 How to send room configuration form and create persistence rooms from android using smack 4.3.4

【讨论】:

以上是关于当组成员尝试获取成员列表时获得禁止的身份验证的主要内容,如果未能解决你的问题,请参考以下文章

尝试通过 oauth 进行身份验证时访问被拒绝

ASP.Net Core Identity JWT 基于角色的身份验证被禁止

摘要身份验证返回未经授权的

突然在 YouTube V3 API 上获得 Oauth 2.0 同意的 403(禁止)

禁用 cookie 时如何验证用户身份?

使用 LDAP 和组成员身份的 Spring 安全性