Fix Basic authentication header
Issue: google/ExoPlayer#9544 The header must include the word "Basic", but the word is missing. #minor-release PiperOrigin-RevId: 443386880
This commit is contained in:
parent
27c1876c9f
commit
16b0cee0b6
@ -65,6 +65,8 @@
|
|||||||
([#47](https://github.com/androidx/media/pull/47)).
|
([#47](https://github.com/androidx/media/pull/47)).
|
||||||
* Add RTP reader for WAV
|
* Add RTP reader for WAV
|
||||||
([#56](https://github.com/androidx/media/pull/56)).
|
([#56](https://github.com/androidx/media/pull/56)).
|
||||||
|
* Fix RTSP basic authorization header.
|
||||||
|
([#9544](https://github.com/google/ExoPlayer/issues/9544)).
|
||||||
* Session:
|
* Session:
|
||||||
* Fix NPE in MediaControllerImplLegacy
|
* Fix NPE in MediaControllerImplLegacy
|
||||||
([#59](https://github.com/androidx/media/pull/59))
|
([#59](https://github.com/androidx/media/pull/59))
|
||||||
|
@ -47,9 +47,14 @@ import java.security.NoSuchAlgorithmException;
|
|||||||
/** HTTP digest authentication (RFC2069). */
|
/** HTTP digest authentication (RFC2069). */
|
||||||
public static final int DIGEST = 2;
|
public static final int DIGEST = 2;
|
||||||
|
|
||||||
private static final String DIGEST_FORMAT =
|
/** Basic authorization header format, see RFC7617. */
|
||||||
|
private static final String BASIC_AUTHORIZATION_HEADER_FORMAT = "Basic %s";
|
||||||
|
|
||||||
|
/** Digest authorization header format, see RFC7616. */
|
||||||
|
private static final String DIGEST_AUTHORIZATION_HEADER_FORMAT =
|
||||||
"Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\"";
|
"Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\"";
|
||||||
private static final String DIGEST_FORMAT_WITH_OPAQUE =
|
|
||||||
|
private static final String DIGEST_AUTHORIZATION_HEADER_FORMAT_WITH_OPAQUE =
|
||||||
"Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\","
|
"Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\","
|
||||||
+ " opaque=\"%s\"";
|
+ " opaque=\"%s\"";
|
||||||
|
|
||||||
@ -109,9 +114,11 @@ import java.security.NoSuchAlgorithmException;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getBasicAuthorizationHeaderValue(RtspAuthUserInfo authUserInfo) {
|
private String getBasicAuthorizationHeaderValue(RtspAuthUserInfo authUserInfo) {
|
||||||
return Base64.encodeToString(
|
return Util.formatInvariant(
|
||||||
RtspMessageUtil.getStringBytes(authUserInfo.username + ":" + authUserInfo.password),
|
BASIC_AUTHORIZATION_HEADER_FORMAT,
|
||||||
Base64.DEFAULT);
|
Base64.encodeToString(
|
||||||
|
RtspMessageUtil.getStringBytes(authUserInfo.username + ":" + authUserInfo.password),
|
||||||
|
Base64.DEFAULT));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getDigestAuthorizationHeaderValue(
|
private String getDigestAuthorizationHeaderValue(
|
||||||
@ -139,10 +146,16 @@ import java.security.NoSuchAlgorithmException;
|
|||||||
|
|
||||||
if (opaque.isEmpty()) {
|
if (opaque.isEmpty()) {
|
||||||
return Util.formatInvariant(
|
return Util.formatInvariant(
|
||||||
DIGEST_FORMAT, authUserInfo.username, realm, nonce, uri, response);
|
DIGEST_AUTHORIZATION_HEADER_FORMAT, authUserInfo.username, realm, nonce, uri, response);
|
||||||
} else {
|
} else {
|
||||||
return Util.formatInvariant(
|
return Util.formatInvariant(
|
||||||
DIGEST_FORMAT_WITH_OPAQUE, authUserInfo.username, realm, nonce, uri, response, opaque);
|
DIGEST_AUTHORIZATION_HEADER_FORMAT_WITH_OPAQUE,
|
||||||
|
authUserInfo.username,
|
||||||
|
realm,
|
||||||
|
nonce,
|
||||||
|
uri,
|
||||||
|
response,
|
||||||
|
opaque);
|
||||||
}
|
}
|
||||||
} catch (NoSuchAlgorithmException e) {
|
} catch (NoSuchAlgorithmException e) {
|
||||||
throw ParserException.createForManifestWithUnsupportedFeature(/* message= */ null, e);
|
throw ParserException.createForManifestWithUnsupportedFeature(/* message= */ null, e);
|
||||||
|
@ -33,7 +33,7 @@ public class RtspAuthenticationInfoTest {
|
|||||||
String authenticationRealm = "WallyWorld";
|
String authenticationRealm = "WallyWorld";
|
||||||
String username = "Aladdin";
|
String username = "Aladdin";
|
||||||
String password = "open sesame";
|
String password = "open sesame";
|
||||||
String expectedAuthorizationHeaderValue = "QWxhZGRpbjpvcGVuIHNlc2FtZQ==\n";
|
String expectedAuthorizationHeaderValue = "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\n";
|
||||||
RtspAuthenticationInfo authenticator =
|
RtspAuthenticationInfo authenticator =
|
||||||
new RtspAuthenticationInfo(
|
new RtspAuthenticationInfo(
|
||||||
RtspAuthenticationInfo.BASIC, authenticationRealm, /* nonce= */ "", /* opaque= */ "");
|
RtspAuthenticationInfo.BASIC, authenticationRealm, /* nonce= */ "", /* opaque= */ "");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user