2016-12-23 11 views
1

私はUnityで初心者であり、Unityで初めてXMPPを実装していますが、サーバとの接続を確立できません。以下 はエラーログです:SASL XMPP認証が<not-authorized>で失敗する

以下
<stream:stream to='192.168.1.225' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'> 

<stream:stream xmlns:stream="http://etherx.jabber.org/streams" from="daydate" xml:lang="en" id="80mu0xgew1" version="1.0" > 

<stream:features xmlns:stream="http://etherx.jabber.org/streams"><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls" /><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism><mechanism>SCRAM-SHA-1</mechanism><mechanism>CRAM-MD5</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression><auth xmlns="http://jabber.org/features/iq-auth" /><register xmlns="http://jabber.org/features/iq-register" /></stream:features> 

<starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls" /> 

<proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls" /> 

<stream:stream to='192.168.1.225' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'> 

<stream:stream xmlns:stream="http://etherx.jabber.org/streams" from="daydate" xml:lang="en" id="80mu0xgew1" version="1.0" > 

<stream:features xmlns:stream="http://etherx.jabber.org/streams"><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism><mechanism>SCRAM-SHA-1</mechanism><mechanism>CRAM-MD5</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression><auth xmlns="http://jabber.org/features/iq-auth" /><register xmlns="http://jabber.org/features/iq-register" /></stream:features> 

<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="DIGEST-MD5" /> 

<challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cmVhbG09ImRheWRhdGUiLG5vbmNlPSJ0anpIMkhxMGJnRC9hVVdmNHAvZTNGaWdFYVpod0pHRGdzdkkrYXBPIixxb3A9ImF1dGgiLGNoYXJzZXQ9dXRmLTgsYWxnb3JpdGhtPW1kNS1zZXNz</challenge> 

<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9InNhZ2FyIixyZWFsbT0iZGF5ZGF0ZSIsbm9uY2U9InRqekgySHEwYmdEL2FVV2Y0cC9lM0ZpZ0VhWmh3SkdEZ3N2SSthcE8iLGNub25jZT0iZjdmZmY5YjBmZDEwZGQ4ZGMxYWVhMzg2MDM2OTJmMzNkNDdjNGFlZWNhMTcwNzYwYzlhNmZlZjQwZjAyMmZmMCIsbmM9MDAwMDAwMDEscW9wPWF1dGgsZGlnZXN0LXVyaT0ieG1wcC8xOTIuMTY4LjEuMjI1IixjaGFyc2V0PXV0Zi04LHJlc3BvbnNlPTJkYWMyMDMxMDA2NDIxM2E3ZDBlOTFkMDUzYzQ1NjYx</response> 

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized /></failure> 

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized /></failure> 

</stream:stream> 

は、サーバーとの接続を確立するためのコードです:

void Start() { 


    connection = new JUN.Connection(); 

    connection.Server = "192.168.1.225"; 
    connection.Port = 5222; 
    connection.Username = "username"; //Without @domainName 
    connection.Password = "password"; 

    connection.AutoRoster = true; 
    connection.AutoAgents = false; 
    connection.AutoPresence = true; 
    connection.AutoResolveConnectServer = false; 

    connection.SocketConnectionType = SocketConnectionType.Direct; 

    connection.OnReadXml += new XmlHandler(OnReadXml); 
    connection.OnWriteXml += new XmlHandler(OnWriteXml); 
    connection.OnLogin += delegate (object sender) { queue.Enqueue(() => OnLogin(sender)); }; 
    connection.OnClose += delegate (object sender) { queue.Enqueue(() => OnClose(sender)); }; 
    connection.OnError += new ErrorHandler(OnError); 
    connection.OnPresence += delegate (object sender, Presence pres) { queue.Enqueue(() => OnPresence(sender, pres)); }; 
    connection.OnMessage += delegate (object sender, Message msg) { queue.Enqueue(() => OnMessage(sender, msg)); }; 
    connection.OnAuthError += new XMPPElementHandler(OnAuthError); 
    connection.OnSocketError += new ErrorHandler(OnSocketError); 
    connection.OnStreamError += new XMPPElementHandler(OnStreamError); 

    connection.OnConnectionStateChanged += delegate (object sender, ConnectionState state) { queue.Enqueue(() => OnConnectionStateChanged(sender, state)); }; 
    connection.Open(); 

} 

私はこの問題に直面し、同じ問題で多くのドキュメントを通過しますが、解決策を取得しておりません。 私はOpenfireサーバーを使用しています。

私を助けてください。

答えて

1

XMPPドメインは、サーバープロパティで設定したipではなく、日中です。 サーバをデートに設定し、サーバをあなたに接続します。

サーバー用の適切なdnsとSRVレコードをセットアップすると簡単になります。 XMPPドメインは、ユーザ名とパスワードに加えてSASL認証の一部です。

+0

返信ありがとうございますが、これも機能していません。 – technerd

+0

新しいログを追加し、ユーザー名とパスワードが正しいことを確認してください。 – Alex

+0

ライブサーバーでは正常に動作しますが、マシンで作成されたローカルサーバーでは動作しません。 – technerd

関連する問題