Quantcast
Channel: TechNet Blogs
Viewing all articles
Browse latest Browse all 34890

Anonymous join from Skype for Business and Lync clients

$
0
0

Overview

I work with many customers and partners on Skype for Business and Lync and one of the areas that I focus on is online meetings. One question that comes up quite frequently is "can I use my Skype for Business or Lync client to join a meeting anonymously".

In short the answer is "yes" however there are many different situations and scenarios that both the meeting attendee and the meeting organizer may find themselves in. The purpose of this blog is to better explain how this anonymous join process works and to give the reader as much detail and background as I can on all the different things that you need to think about when looking at the process of joining a meeting anonymously.

Skype for Business and Lync (both 2013 and 2010 and Lync for Mac) can be used to join meetings anonymously if you are already signed in with your own Skype for Business or Lync account. This anonymous join scenario is only needed if you are trying to join a meeting hosted by a company that you are not federated with. Here is an overview of how this works is as follows:

  • Client sends an INVITE message to your front end server with a request to join a meeting
  • Server determines that you are not federated with the domain that the meeting organizer resides in
  • Server responds with a SIP message and Diagnostic code indicating that you are not federated with the organizer's domain
  • Client interprets the SIP message and Diagnostic code and decides if it should try to join anonymously
  • Client does a DNS lookup to determine where to send the anonymous INVITE to
  • Client sends an anonymous INVITE to the meeting organizer's Edge server in an attempt to join the meeting
  • Client joins you to the meeting as an anonymous user and the word "Guest" appears next to your name in the meeting roster

There are actually many combinations of meeting join scenarios and they all differ depending on where the meeting attendee and organizer are homed. Each of these different combinations will produce a slightly different set of log files on the client however ultimately each one of them should result in either a meeting join or a successful anonymous join. This blog post focuses on the sip invite portion anonymous meeting join and does not cover media connectivity for audio and video. I will cover that part in a future blog post.

If you are interested to see how anonymous join works when you have a Lync 2013 client that is not signed in please see my previous my blog post on anonymous join via LWA - http://blogs.technet.com/b/scottstu/archive/2014/10/30/lync-2013-now-supports-falling-back-to-the-lync-web-app.aspxas we will not be covering that scneario here.

Requirements

The meeting attendee's client must be

  • Able to look up SRV records in the meeting organizer's DNS domain if they are using SRV records for remote user access or must be able to look up A (host) records if the meeting organizer's company is using A (host) records for remote user access
  • Able to connect directly to meeting organizer's edge server via the remote access port (typically 443 but sometimes 5061)
  • Able to trust the certificate presented by the meeting organizer's edge server
  • Running an appropriate client that supports anonymous join fallback (Lync 2013, Lync 2010 and Lync for Mac)

The meeting organizer's organization must have the following configuration

  • Have anonymous meetings enabled for the meeting organizer
  • Allow remote user access on their access edge server on the port defined in their SRV record or via port 443 or port 5061
  • Have appropriate SRV records or A (host) records configured in their external DNS server
  • Have configured an appropriate certificate on their edge server that is issued via a public certificate authority

Anonymous join walk through

In this section we will discuss the steps that the client takes in order to join a meeting anonymously and we will review it step by step looking at an example.

The original meeting invite that the client sends to join a federated meeting is sent via its own front end server however if the user is connected via an Edge serer then the message will be sent via the Edge. The user's front end server will determine if the user is enabled for federation or not. If they are not enabled the front end server sends back a SIP response that contains a specific ms-diagnostics value.

In this section we will walk through an example meeting join sequence where you will see the meeting attendee is karen@contoso.com and the meeting organizer is garth@tailspintoys.com.

SIP Message 1 shows a partial segment of the original invite sent by Karen to Garth.

--------------------------

03/30/2015|13:36:59.928 16EC:1030 INFO :: Sending Packet – 209.216.129.2:443 (From Local Address: 192.168.1.200:52952) 2067 bytes:

03/30/2015|13:36:59.928 16EC:1030 INFO :: INVITE sip:garth@tailspintoys.com;gruu;opaque=app:conf:focus:id:2Z92HZZZ SIP/2.0

Max-Forwards: 70

From: <sip:karen@contoso.com>;tag=9004006031;epid=23c6af65b1

To: <sip:garth@tailspintoys.com;gruu;opaque=app:conf:focus:id:2Z92HZZZ>

CSeq: 1 INVITE

Contact: <sip:karen@contoso.com;opaque=user:epid:LKHrZjUoxV66Oi8tgk1A9gAA;gruu>

User-Agent: UCCAPI/15.0.4701.1000 OC/15.0.4701.1000 (Microsoft Lync)

Supported: ms-dialog-route-set-update

Supported: timer

Supported: histinfo

Supported: ms-safe-transfer

Supported: ms-sender

Supported: ms-early-media

ms-keep-alive: UAC;hop-hop=yes

Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE, REFER, NOTIFY, BENOTIFY, OPTIONS

Content-Type: application/cccp+xml

Content-Length: 1008

<?xml version="1.0"?>

<request xmlns="urn:ietf:params:xml:ns:cccp" xmlns:mscp="http://schemas.microsoft.com/rtc/2005/08/cccpextensions" C3PVersion="1" to="sip:garth@tailspintoys.com;gruu;opaque=app:conf:focus:id:2Z92HZZZ" from="sip:karen@contoso.com" requestId="387792480"><addUser>

--------------------------

SIP Message 1 – Invite sent by karen@contoso.com to join a meeting organized by garth@tailspintoys.com

As you can see in SIP Message 1 the from: tag shows karen @contoso.com while the to: tag shows garth@tailspintoys.com and the message is being sent to IP address 209.216.129.2 which is the IP address of Karen's edge server.

At this point Karen's front end server determines that federation is not enabled and sends the response that you can see in SIP Message 2 below.

--------------------------

03/30/2015|13:28:27.682 16EC:1030 INFO :: Data Received -209.216.129.2:443 (To Local Address: 192.168.1.200:52952) 1033 bytes:

03/30/2015|13:28:27.682 16EC:1030 INFO :: SIP/2.0 504 Server time-out

ms-user-logon-data: RemoteUser

Authentication-Info: TLS-DSK qop="auth", opaque="21A773E9", srand="5EA20BA7", snum="33", rspauth="e4e881d3db7c97b7b49d552966315c3b5d0481d6", targetname="server.contoso.com", realm="SIP Communications Service", version=4

Via: SIP/2.0/TLS 192.168.1.200:52952;received=42.157.86.172;ms-received-port=52952;ms-received-cid=2C00

Content-Length: 0

From: "Karen Berg"<sip:karen@contoso.com>;tag=0fa5a85424;epid=23c6af65b1

To: <sip:garth@tailspintoys.com;gruu;opaque=app:conf:focus:id:2Z92HZZZ>;tag=BA6EAB929067DF296876B3B74D35748D

Call-ID: ab166f84d6db431c8c461da04d3c3407

CSeq: 1 INVITE

ms-diagnostics: 1017;reason="Cannot route From and To domains in this combination";summary="Cannot route between the source and destination domains because partner discovery is not enabled";external-domain="tailspintoys.com";external-type="domain-type-remote";internal-domain="contoso.com";internal-type="domain-type-local";source="sipfed.contoso.com"

Server: RTC/5.0

--------------------------

SIP Message 2 – Server response received by karen@contoso.com.

 

Karen's client receives a SIP 504 response code along with a 1017 diagnostic code and now knows that it should invoke the anonymous join process.

In general the client examines the SIP response and diagnostic code it receives back and triggers the anonymous join process if it finds a valid response code OR a valid ms-disagnostics code.

All valid response and ms-diagnostic codes are as follows:

 

Valid response codes

Valid ms-diagnostics codes

504 Server time-out

1005;reason="Cannot route to destination domain"

404 Not Found

1008;reason="Unable to resolve DNS SRV record"

 

1009;reason=" No match for domain in DNS SRV results"

 

1002;reason="From URI not authorized to communicate with federated partners"

 

4033;reason=" To User not authorized for Federation"

Table 1 – Valid response and ms-diagnostic codes

 

Now that the client has decided to join anonymously it must determine where to deliver the new anonymous meeting invite to. The client leverages the same functionality that would be used by to sign in to Skype for Business as a remote user in the meeting organizer's domain.

If you look in the sip traces of the client log file you will notice that Karen's client has started to query DNS to determine how to deliver this anonymous invite. Trace Message 1 below shows the first record that Karen looks for.

--------------------------

QueryDNSSrv - DNS Name[_sipinternaltls._tcp.tailspintoys.com]

--------------------------

Trace Message 1 – DNS query for _sipinternaltls record

Karen's client will continue querying these DNS records until it is successful in finding a destination. The DNS records that it will search are:

  • _sipinternaltls._tcp.tailspintoys.com
  • _sip._tls.tailspintoys.com
  • sipinteral.tailspintoys.com
  • sip.tailspintoys.com
  • sipexternal.tailspintoys.com

If it receives a result for the SRV record it will use the port that was provided however if it only succeeds in matching an A record the client will try to connect on port 443 and then on port 5061.

In our example Karen's client receives a DNS response for _sip._tls.tailspintoys.com which returns a host record of sip.tailspintoys.com on port 5061. Karen's client then resolves the value of sip.tailspintoys.com to the IP address 206.555.123.456.

SIP Message 3 shows a partial segment of the anonymous invite sent by Karen to Garth.

--------------------------

03/30/2015|13:37:01.769 16EC:1030 INFO :: Sending Packet - 206.555.123.456:5061 (From Local Address: 192.168.1.200:53025) 2050 bytes:

03/30/2015|13:37:01.769 16EC:1030 INFO :: INVITE sip:garth@tailspintoys.com;gruu;opaque=app:conf:focus:id:2Z92HZZZ SIP/2.0

Via: SIP/2.0/TLS 192.168.16.221:53025

Max-Forwards: 70

From: "Karen Berg" <sip:36825c7a-a4ea-430b-aa85-e8aa6ee97ebc@anonymous.invalid>;tag=1152deba20;epid=4edd74c4be

To: <sip:garth@tailspintoys.com;gruu;opaque=app:conf:focus:id:2Z92HZZZ>

CSeq: 1 INVITE

Contact: <sip:36825c7a-a4ea-430b-aa85-e8aa6ee97ebc@anonymous.invalid>;proxy=replace;+sip.instance="<urn:uuid:CC4F4797-4760-58C5-8CAB-8AB72E4546BC>"

User-Agent: UCCAPI/15.0.4701.1000 OC/15.0.4701.1000 (Microsoft Lync)

Supported: ms-dialog-route-set-update

Supported: timer

Supported: histinfo

Supported: ms-safe-transfer

Supported: ms-sender

Supported: ms-early-media

ms-keep-alive: UAC;hop-hop=yes

Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE, REFER, NOTIFY, BENOTIFY, OPTIONS

Content-Type: application/cccp+xml

Content-Length: 1121

 

<?xml version="1.0"?>

<request xmlns="urn:ietf:params:xml:ns:cccp" xmlns:mscp="http://schemas.microsoft.com/rtc/2005/08/cccpextensions" C3PVersion="1" to="sip:garth@tailspintoys.com;gruu;opaque=app:conf:focus:id:2Z92HZZZ" from="sip:36825c7a-a4ea-430b-aa85-e8aa6ee97ebc@anonymous.invalid" requestId="387813728"><addUser>

--------------------------

SIP Message 3 – Anonymous Invite sent by karen@contoso.com to join a meeting organized by garth@tailspintoys.com

 

As you can see in SIP Message 3, the from: tag shows 36825c7a-a4ea-430b-aa85-e8aa6ee97ebc@anonymous.invalid while the to: tag still shows garth@tailspintoys.com. The message is being sent to IP address 206.555.123.456 which is the IP address of Garth's tailspintoys.com edge server. You will also notice that Karen's client has extracted her display name and sent that in the from: tag which is how her name will appear in the roster when she has joined the meeting as shown in Figure 1 below.

 

Figure 1 – Meeting window showing Karen joined as a Guest

 

That is all there is to it! We have walked through a step by step example that shows how the anonymous meeting join works.

Common Meeting Join Scenarios

As you may have noticed in the above example I didn't specifically say where the meeting attendee and the meeting organizer were homed. Lync (and soon to be Skype for Business) is available in both an on-premises version via Lync Server 2013 or Lync Server 2010 as well as in a service model via Lync Online. There are many scenarios in which a user may be trying to join a meeting that is organized by a user in another organization that is hosted in a different domain.

Table 2 below shows some of the most common combinations of meeting join scenarios.

Scenario

Meeting Attendee

Meeting Organizer

Scenario 1

On-premises Lync 2013

On-premises Lync 2013

Scenario 2

On-premises Lync 2013

Lync Online

Scenario 3

Lync Online

On-premises Lync 2013

Scenario 4

Lync Online

Lync Online

Table 2 – Meeting join scenarios

The reason that it is important to understand these various scenarios is due to the fact that the SIP response codes returned by the meeting attendee's registrar server will vary depending on whether the user is homed on-premises or if they are homed online. The response received will also vary depending on how the federation setting is configured in both environments.

We will now look at 4 specific combinations of meeting attendee/organizer.

Scenario 1

  

Meeting Organizer

On-premises Lync 2013

tailspintoys.com

  

Federation enabled from contoso.com

Federation disabled from contoso.com

Meeting Attendee

On-premises Lync 2013

Contoso.com

Partner domain discovery disabled

Tailspintoys.com not allowed

Anonymous join works

RC - 504

Ms-diag – 1017

Anonymous join works

RC - 504

Ms-diag – 1017

Partner domain discovery disabled

Tailspintoys.com allowed

Federated join works

Anonymous join works

RC - 504

Ms-diag – 1034

Partner domain discovery enabled

Tailspintoys.com not allowed

Federated join works

Anonymous join works

RC - 504

Ms-diag – 1034

Partner domain discovery enabled

Tailspintoys.com allowed

Federated join works

Anonymous join works

RC - 504

Ms-diag – 1034

Partner domain discovery enabled Tailspintoys.com blocked

Anonymous join works

RC - 504

Ms-diag – 1064

Anonymous join works

RC - 504

Ms-diag - 1064

Table 3 – Scenario 1

ms-diagnostics: 1017;reason="Cannot route From and To domains in this combination";summary="Cannot route between the source and destination domains because partner discovery is not enabled";external-domain="tailspintoys.com";external-type="domain-type-remote";internal-domain="contoso.com";internal-type="domain-type-local";source="sipfed.contoso.com"

ms-diagnostics: 1034;reason="Previous hop federated peer did not report diagnostic information";Domain="tailspintoys.com";PeerServer="sip.tailspintoys.com";source="sipfed.contoso.com"

ms-diagnostics: 1064;reason="Cannot route to blocked domain";domain="tailspintoys.com";suffix="tailspintoys.com";source="sipfed.contoso.com"

 

Scenario 2

  

Meeting Organizer

Lync Online

contoso.onmicrosoft.com

  

Federation enabled from contoso.com

Federation disabled from contoso.com

Meeting Attendee

On-premises Lync 2013

Contoso.com

Partner domain discovery disabled

contoso.onmicrosoft.com not allowed

Anonymous join works

RC – 504

Ms-diag – 1028

Anonymous join works

RC – 504

Ms-diag - 1028

Partner domain discovery disabled

contoso.onmicrosoft.com allowed

Federated join works

Anonymous join works

RC- 504

Ms-diag - 1036

Partner domain discovery enabled

contoso.onmicrosoft.com not allowed

Federated join works

Anonymous join works

RC- 504

Ms-diag - 1036

Partner domain discovery enabled

contoso.onmicrosoft.com allowed

Federated join works

Anonymous join works

RC- 504

Ms-diag - 1036

Partner domain discovery enabled

contoso.onmicrosoft.com blocked

Anonymous join works

RC - 504

Ms-diag – 1064

Anonymous join works

RC - 504

Ms-diag - 1064

Table 4 –Scenario 2

Note– The results shown in Table 4 above assume that you have configured a hosting provider pointed to sipfed.online.lync.com. If you do not have this hosting provider configured then some of the scenarios may produce different results.

ms-diagnostics: 1028;reason="Domain resolved by DNS SRV to a configured hosting service but the domain is not in the allow list";domain="contoso.onmicrosoft.com";fqdn1="sipfed.online.lync.com:5061";source="sipfed.contoso.com"

ms-diagnostics: 1036;reason="Previous hop shared address space peer did not report diagnostic information";Domain="contoso.onmicrosoft.com";PeerServer="sipfed.online.lync.com";source="sipfed.contoso.com"

ms-diagnostics: 1064;reason="Cannot route to blocked domain";domain="contoso.onmicrosoft.com";suffix="contoso.onmicrosoft.com";source="sipfed.contoso.com"

 

Scenario 3

  

Meeting Organizer

On-premises Lync 2013

Contoso.com

  

Federation enabled from contoso.onmicrosoft.com

Federation disabled from contoso.onmicrosoft.com

Meeting Attendee

Lync Online

contoso.onmicrosoft.com

On only for allowed domains contoso.com not allowed

Anon join works

RC – 504

Diag – 27000

Anon join works

RC – 504

Diag – 27000

Off Completely

Anon join works

RC – 403

Diag – 1002

Anon join works

RC – 403

Diag – 1002

On except for blocked domains

contoso.com not blocked

Federated join works

Anon join works

RC – 504

Diag – 1034

Table 4 –Scenario 3

 

ms-diagnostics: 1002;reason="From URI not authorized to communicate with federated partners";from-uri="garthf@contoso.onmicrosoft.com";destination="karenb@contoso.com";source="sipfed0A.online.lync.com"

ms-diagnostics: 1034;reason="Previous hop federated peer did not report diagnostic information";Domain="contoso.com";PeerServer="sipfed.contoso.com";source="sipfed0A.online.lync.com"

ms-diagnostics: 27000;reason="To-Uri Domain is not in the sender-tenant allow list";source="SN20A05FES03.INFRA.LYNC.COM";appName="OutgoingFederation"

 

Scenario 4

  

Meeting Organizer

Lync Online

tailspintoys.onmicrosoft.com

  

Federation enabled from contoso.onmicrosoft.com

Federation disabled from contoso.onmicrosoft.com

Meeting Attendee

Lync Online

Contoso.onmicrosoft.com

On only for allowed domains contoso.com not allowed

Anonymous join works

RC – 504

Diag – 27000

Anonymous join works

RC – 504

Diag – 27000

Off Completely

Anonymous join works

RC – 403

Diag – 1002

Anonymous join works

RC – 403

Diag – 1002

On except for blocked domains

contoso.com not blocked

Federated join works

Anonymous join works

RC – 403

Diag – 4033

Table 5 –Scenario 4

 

ms-diagnostics: 1002;reason="From URI not authorized to communicate with federated partners";from-uri="garthf@contoso.onmicrosoft.com";destination="bonniek@tailspintoys.onmicrosoft.com";source="sipfed0A.online.lync.com"

ms-diagnostics: 4033;reason="To User not authorized for Federation";processing-cluster="sippooldm21a05.infra.lync.com";processing-frontend="DM21A05FES06.infra.lync.com";target-user-primary-pool="sippooldm21a05.infra.lync.com";source="DM21A05FES06.infra.lync.com"

ms-diagnostics: 27000;reason="To-Uri Domain is not in the sender-tenant allow list";from-uri="garthf@contoso.onmicrosoft.com";destination="bonniek@tailspintoys.onmicrosoft.com";source="sipfed0A.online.lync.com"

 

Federation Configuration

The various meeting join scenarios described above showed various federation configuration settings so we will now describe how to configure each of them.

On premises Configuration – Allowing Domain Federation

There are methods that a Lync on-premises administrator can use in order to configure an "allowed" domain for federation. The following section will cover those different methods and provide details on how to configure each.

Partner Domain Discovery

In this scenario the administrator can allow "partner domain discovery" which means that the target domain is not added directly but rather it is allowed to be discovered. The partner company must publish an SRV record for _sipfederationtls._tcp.domain.com in order for this to work.

To do this navigate to the "Access Edge Configuration" tab that is located under the Federation and External Access tab in the Lync Server control panel and check the box next to Enable partner domain discovery as shown in Figure 2 below.

Figure 2 – Configuring partner domain discovery

Allowed Domain

If you choose not to enable partner domain discovery as documented above then you should navigate to the "Access Edge Configuration" tab that is located under the Federation and External Access tab in the Lync Server control panel and uncheck the box next to Enable partner domain discovery as shown in Figure 3 below.

Figure 3 – Disabling partner domain discovery

If you have disabled partner domain discovery then you must specifically add the federated domain to the SIP Federated Domains tab as shown in Figure 4 below where we have allowed contoso.com.

Figure 4 – Allow domain federation with contoso.com

On premises Configuration – Blocking Domain Federation

There are three ways to block domain federation and which one you choose depends on whether or not you want to block federation completely or whether or not you want to block it for a specific domain.

1. Uncheck the Enable federation and Public IM connectivity check box under the Access Edge Configuration tab.

If you choose this option then you are blocking federation for all domains and can't turn on or off a specific domain. To do this uncheck the box next to Enable federation and public IM connectivity as shown in Figure 5 below.

Figure 5– Disabling federation and public IM connectivity

2. Disable partner domain discovery and not allow a specific domain

If you choose this option you should uncheck the box next to Enable partner domain discovery as shown in Figure 6 below. With this configuration set and no domains configured in the SIP Federated Domains tab then you have disabled federation with all domains.

Figure 6– Disabling partner domain discovery

 

3. Enable partner domain discovery but block a specific domain

If you choose this option you should check the box next to Enable federation and public IM connectivity as shown in Figure 7 below.

Figure 7 – Configuring partner domain discovery

You should also add the domain that you want to block to the list under SIP Federated Domains as shown in Figure 8 below.

Figure 8 – Adding northwindtranders.com as a blocked domain

 

Online Configuration – Allowing Domain Federation

There are a few ways to allow domain federation in Lync Online.

1. On except for blocked domains

To allow federation to all domains you should navigate to the organization/external communications tab in the Lync Admin center and select On except for blocked domains as shown in Figure 9 below.

Figure 9 – Configuring On except for blocked domains access in Lync online admin center

2. On only for allowed domains

To allow federation in an online tenant you should navigate to the organization/external communications tab in the Lync Online control panel and select "On only for allowed domains" as shown in Figure 9 below. You also need to specifically add the domain to the list of allowed domains as shown in Figure 10 below.

Figure 10 – Configuring On only for allowed domains in Lync online admin center

 

Note: When making changes to the external access configuration in Lync Online the changes do not take effect immediately. It can take up to 30 – 45 minutes for the changes to take effect.

Configuring Anonymous Meeting Access

On-premises configuration

To configure anonymous meeting join on a user's conferencing policy navigate the Conferencing tab on Lync Server Control Panel. From there go to the Conferencing Policy sub tab and make sure to check the box next to All participants to invite anonymous users.

Figure 11 – Configuring anonymous user access

If you try to join a meeting as an anonymous user and the meeting organizer has not been assigned a conferencing policy that enables permits anonymous join as show in Figure 11 above then you will get an error as shown in Figure 12 below.

 

Figure 12 – Anonymous join error message

 

Conclusions

I hope that this document has helped you understand the anonymous join process that exists in the Lync client today and the required configuration pieces that need to be in place to make it work. Please review the blog post and let me know you have any thoughts/comments as I do read them all and will make adjustments if needed.

Special thanks to the Boston MTC for their support in my testing of these scenarios.

Thanks for reading.

Scott


Viewing all articles
Browse latest Browse all 34890

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>